Submission #6021020


Source Code Expand

void solve();

int main() {
	solve();
	return 0;
}

//////////////////////////////////////////////////
//////////////////////////////////////////////////
#include <iostream>
#include <vector>
#include <limits.h>
#include <algorithm>

using namespace std;

int W,H,N;
typedef pair<int, int> pii;
vector<pii> POS;
vector<int> X, Y;
vector<vector<int>> MAP;
vector<vector<int>> XSUM, YSUM;   //XSUM[x][y] = Σ1<=i<=x MAP[i][y]
int DP[62][62][62][62];

void solve() {
	cin >>W >> H >> N;
	POS.resize(N);
	for (int n = 0; n < N; n++) {
		int x, y;
		cin >> x >> y;
		POS[n] = pii(x, y);
	}
	POS.push_back(pii(W + 1, H + 1));
	sort(POS.begin(), POS.end(), [](pii a, pii b) {return a.first < b.first; });
	X.push_back(0);
	if(POS[0].first != 1)X.push_back(1);
	for (int n = 1; n <= N; n++) {
		if (POS[n].first != POS[n - 1].first) {
			X.push_back(POS[n - 1].first);
			if (POS[n].first - POS[n - 1].first > 1)X.push_back(POS[n - 1].first + 1);
		}
	}
	sort(POS.begin(), POS.end(), [](pii a, pii b) {return a.second < b.second; });
	Y.push_back(0);
	if (POS[0].second != 1)Y.push_back(1);
	for (int n = 1; n <= N; n++) {
		if (POS[n].second != POS[n - 1].second) {
			Y.push_back(POS[n - 1].second);
			if (POS[n].second - POS[n - 1].second > 1)Y.push_back(POS[n - 1].second + 1);
		}
	}
	X.push_back(W + 1); Y.push_back(H + 1);
	MAP.resize(X.size());
	for (int x = 0; x < X.size(); x++)MAP[x].resize(Y.size(),0);
	for (int xn = 1; xn < X.size() - 1; xn++) {
		for (int yn = 1; yn < Y.size() - 1; yn++) {
			MAP[xn][yn] = (X[xn + 1] - X[xn]) * (Y[yn + 1] - Y[yn]);
		}
	}
	XSUM.resize(X.size()-1);
	YSUM.resize(X.size() - 1);
	for (int x = 0; x < X.size()-1; x++) {
		XSUM[x].resize(Y.size() - 1, 0);
		YSUM[x].resize(Y.size() - 1, 0);
	}

	for (int x = 1; x < X.size()-1; x++) {
		for (int y = 1; y < Y.size()-1; y++) {
			XSUM[x][y] = XSUM[x - 1][y] + MAP[x][y];
			YSUM[x][y] = YSUM[x][y - 1] + MAP[x][y];
		}
	}
	sort(POS.begin(), POS.end(), [](pii a, pii b) {return a.first < b.first; });
	for (int n = 1; n <= N; n++) {
		int oldx = POS[n].first;
		POS[n].first = POS[n - 1].first;
		while (X[POS[n].first] != oldx)POS[n].first++;
	}
	sort(POS.begin(), POS.end(), [](pii a, pii b) {return a.second < b.second; });
	for (int n = 1; n <= N; n++) {
		int oldy = POS[n].second;
		POS[n].second = POS[n - 1].second;
		while (Y[POS[n].second] != oldy)POS[n].second++;
	}
	for (int x1 = 0; x1 < X.size() - 1; x1++) {
		for (int x2 = 0; x2 < X.size() - 1; x2++) {
			for (int y1 = 0; y1 < Y.size() - 1; y1++) {
				for (int y2 = 0; y2 < Y.size() - 1; y2++) {
					DP[x1][x2][y1][y2] = 0;
				}
			}
		}
	}
	for (int w = 0; w < X.size()-1; w++) {
		for (int x1 = 1; x1 + w < X.size() - 1; x1++) {
			for (int h = 0; h < Y.size()-1; h++) {
				for (int y1 = 1; y1 + h < Y.size()-1; y1++) {
					int x2 = x1 + w, y2 = y1 + h;
					for (int n = 0; n < N; n++) {
						if (POS[n].first < x1 || POS[n].first > x2 ||
							POS[n].second < y1 || POS[n].second > y2)continue;
						int xsum = XSUM[x2][POS[n].second] - XSUM[x1 - 1][POS[n].second];
						int ysum = YSUM[POS[n].first][y2] - YSUM[POS[n].first][y1 - 1];
						int sum = xsum + ysum - MAP[POS[n].first][POS[n].second];
						DP[x1][x2][y1][y2] = max(DP[x1][x2][y1][y2],
							sum + DP[x1][POS[n].first - 1][y1][POS[n].second - 1]
							+ DP[POS[n].first + 1][x2][y1][POS[n].second - 1]
							+ DP[x1][POS[n].first - 1][POS[n].second + 1][y2]
							+ DP[POS[n].first + 1][x2][POS[n].second + 1][y2]);
					}
				}
			}
		}
	}
	cout << DP[1][X.size() - 2][1][Y.size() - 2] << endl;
	return;
}

Submission Info

Submission Time
Task D - 金塊ゲーム
User ano3
Language C++14 (GCC 5.4.1)
Score 0
Code Size 3657 Byte
Status RE
Exec Time 148 ms
Memory 49152 KB

Judge Result

Set Name Sample Subtask1 Subtask2 Subtask3
Score / Max Score 0 / 0 0 / 80 0 / 19 0 / 1
Status
AC × 3
AC × 10
WA × 7
RE × 8
AC × 23
WA × 18
RE × 9
AC × 23
WA × 18
RE × 34
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
Subtask1 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt
Subtask2 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt
Subtask3 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt, subtask3_01.txt, subtask3_02.txt, subtask3_03.txt, subtask3_04.txt, subtask3_05.txt, subtask3_06.txt, subtask3_07.txt, subtask3_08.txt, subtask3_09.txt, subtask3_10.txt, subtask3_11.txt, subtask3_12.txt, subtask3_13.txt, subtask3_14.txt, subtask3_15.txt, subtask3_16.txt, subtask3_17.txt, subtask3_18.txt, subtask3_19.txt, subtask3_20.txt, subtask3_21.txt, subtask3_22.txt, subtask3_23.txt, subtask3_24.txt, subtask3_25.txt
Case Name Status Exec Time Memory
sample_01.txt AC 2 ms 4480 KB
sample_02.txt AC 2 ms 2304 KB
sample_03.txt AC 3 ms 10752 KB
subtask1_01.txt AC 2 ms 4480 KB
subtask1_02.txt AC 2 ms 2432 KB
subtask1_03.txt AC 3 ms 6528 KB
subtask1_04.txt WA 4 ms 12928 KB
subtask1_05.txt RE 96 ms 256 KB
subtask1_06.txt AC 2 ms 2304 KB
subtask1_07.txt WA 3 ms 8704 KB
subtask1_08.txt AC 1 ms 256 KB
subtask1_09.txt RE 97 ms 256 KB
subtask1_10.txt RE 100 ms 256 KB
subtask1_11.txt RE 96 ms 256 KB
subtask1_12.txt WA 2 ms 4480 KB
subtask1_13.txt RE 97 ms 256 KB
subtask1_14.txt WA 3 ms 10752 KB
subtask1_15.txt WA 4 ms 12928 KB
subtask1_16.txt WA 5 ms 14976 KB
subtask1_17.txt RE 97 ms 256 KB
subtask1_18.txt AC 3 ms 8704 KB
subtask1_19.txt AC 2 ms 6528 KB
subtask1_20.txt AC 3 ms 6528 KB
subtask1_21.txt RE 98 ms 256 KB
subtask1_22.txt AC 4 ms 12928 KB
subtask1_23.txt AC 3 ms 6656 KB
subtask1_24.txt RE 97 ms 256 KB
subtask1_25.txt WA 5 ms 14976 KB
subtask2_01.txt AC 9 ms 21376 KB
subtask2_02.txt WA 7 ms 17152 KB
subtask2_03.txt WA 22 ms 27776 KB
subtask2_04.txt WA 21 ms 34048 KB
subtask2_05.txt AC 38 ms 36224 KB
subtask2_06.txt AC 45 ms 36224 KB
subtask2_07.txt AC 33 ms 32000 KB
subtask2_08.txt AC 33 ms 32000 KB
subtask2_09.txt WA 60 ms 38528 KB
subtask2_10.txt WA 134 ms 46976 KB
subtask2_11.txt AC 55 ms 38400 KB
subtask2_12.txt WA 130 ms 46976 KB
subtask2_13.txt WA 71 ms 42752 KB
subtask2_14.txt AC 88 ms 44928 KB
subtask2_15.txt WA 6 ms 19200 KB
subtask2_16.txt AC 37 ms 34048 KB
subtask2_17.txt WA 48 ms 34176 KB
subtask2_18.txt WA 102 ms 49024 KB
subtask2_19.txt AC 86 ms 46848 KB
subtask2_20.txt AC 93 ms 42752 KB
subtask2_21.txt AC 75 ms 38528 KB
subtask2_22.txt AC 112 ms 44928 KB
subtask2_23.txt RE 96 ms 256 KB
subtask2_24.txt WA 148 ms 49152 KB
subtask2_25.txt AC 109 ms 44928 KB
subtask3_01.txt RE 99 ms 256 KB
subtask3_02.txt RE 97 ms 256 KB
subtask3_03.txt RE 97 ms 256 KB
subtask3_04.txt RE 97 ms 256 KB
subtask3_05.txt RE 97 ms 256 KB
subtask3_06.txt RE 99 ms 256 KB
subtask3_07.txt RE 97 ms 256 KB
subtask3_08.txt RE 98 ms 256 KB
subtask3_09.txt RE 97 ms 256 KB
subtask3_10.txt RE 99 ms 256 KB
subtask3_11.txt RE 100 ms 256 KB
subtask3_12.txt RE 97 ms 256 KB
subtask3_13.txt RE 97 ms 256 KB
subtask3_14.txt RE 98 ms 256 KB
subtask3_15.txt RE 98 ms 256 KB
subtask3_16.txt RE 97 ms 256 KB
subtask3_17.txt RE 98 ms 256 KB
subtask3_18.txt RE 97 ms 256 KB
subtask3_19.txt RE 97 ms 256 KB
subtask3_20.txt RE 97 ms 256 KB
subtask3_21.txt RE 97 ms 256 KB
subtask3_22.txt RE 99 ms 256 KB
subtask3_23.txt RE 101 ms 256 KB
subtask3_24.txt RE 97 ms 256 KB
subtask3_25.txt RE 97 ms 256 KB