Submission #2545733


Source Code Expand

#include <iostream>
#include <vector>
#include <map>
#include <tuple>

using namespace std;

using point = pair<int, int>;
using square = tuple<int, int, int, int>;

int solve(int i, int j, int k, int l, vector<point> &M, map<square, int> &memo) {
	square key = {i, j, k, l};
	if (memo[key] > 0) return memo[key];
	int result = 0;

	for (auto m : M) {
		if (m.first < i || k < m.first) continue;
		if (m.second < j || l < m.second) continue;

		int r = k - i + l - j + 1;
		r += solve(i, j, m.first - 1, m.second - 1, M, memo);
		r += solve(i, m.second + 1, m.first - 1, l, M, memo);
		r += solve(m.first + 1, j, k, m.second - 1, M, memo);
		r += solve(m.first + 1, m.second + 1, k, l, M, memo);
		result = max(result, r);
	}

	return memo[key] = result;
}

int main(int argc, char *argv[]) {
	int W, H;
	cin >> W >> H;
	int N;
	cin >> N;
	vector<pair<int, int>> M(N);
	for (int i = 0; i < N; i++) cin >> M[i].first >> M[i].second;

	map<square, int> memo;
	cout << solve(1, 1, W, H, M, memo) << endl;

	return 0;
}

Submission Info

Submission Time
Task D - 金塊ゲーム
User icecocoa6
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1057 Byte
Status CE

Compile Error

./Main.cpp: In function ‘int solve(int, int, int, int, std::vector<std::pair<int, int> >&, std::map<std::tuple<int, int, int, int>, int>&)’:
./Main.cpp:12:26: error: converting to ‘square {aka std::tuple<int, int, int, int>}’ from initializer list would use explicit constructor ‘constexpr std::tuple< <template-parameter-1-1> >::tuple(_UElements&& ...) [with _UElements = {int&, int&, int&, int&}; <template-parameter-2-2> = void; _Elements = {int, int, int, int}]’
  square key = {i, j, k, l};
                          ^