Submission #1917264


Source Code Expand

#include <iostream>
#include <array>
#include <map>
#include <algorithm>
#include <cmath>
#include <vector>
#include <fstream>
#include <string>
#include <random>
#include <queue>
#include <iomanip>
#include <functional>
#include <climits>
#include <tuple>
#include <unordered_map>
#include <limits>
#include <functional>

#define FOR(x,n) for(int x = 0; x < n; x++)
#define PUT(x) cout << x << endl
#define DPUT(x) printf("%.15lf\n",x)
#define GET(x,y) std::get<x>(y)
#define CHMAX(x,y) x = std::max(x,y)
#define CHMIN(x,y) x = std::min(x,y)

using namespace std;

using ll = long long int;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
using vll = std::vector<ll>;
using vpll = std::vector<pll>;
using vpii = std::vector<pii>;
using vi = std::vector<int>;
using vvi = std::vector<vi>;
using vvpii = std::vector<vpii>;
using vch = std::vector<char>;
using vvch = std::vector<vch>;
using tiii = std::tuple<int, int, int>;

const ll mod197 = 1000000007LL;
const ll INF = 200LL * 200 * 100000 + 10;

const double PI11 = 3.14159265359;

const int dis[5] = { 0,1,0,-1,0 };

int h, w;
int c[101][101] = {};

int memo[101][101] = {};

void display() {

	FOR(i, h) {
		FOR(j, w) {
			cerr << memo[i][j] << " ";
		}
		cerr << endl;
	}
	cerr << endl;


	FOR(i, h) {
		FOR(j, w) {
			cerr << c[i][j] << " ";
		}
		cerr << endl;
	}
	cerr << endl;
}

int get_sum(int choco[101][101], int y0, int x0, int y1, int x1) {

	if (y0 == 0 && x0 == 0)
		return choco[y1][x1];
	else if (y0 == 0)
		return  choco[y1][x1] - choco[y1][x0 - 1];
	else if (x0 == 0)
		return  choco[y1][x1] - choco[y0 - 1][x1];
	else
		return choco[y1][x1] - choco[y1][x0 - 1] - choco[y0 - 1][x1] + choco[y0 - 1][x0 - 1];
}

int main(void) {

	cin >> h >> w;

	FOR(i, h)
		FOR(j, w) {
		cin >> c[i][j];
		if ((i + j) % 2) {
			memo[i][j] = c[i][j];
			c[i][j] = 0;
		}
	}

	//display();

	FOR(i, h)
		FOR(j, w) {
		if (i >= 1 && j >= 1)
			memo[i][j] -= memo[i - 1][j - 1];

		memo[i + 1][j] += memo[i][j];
		memo[i][j + 1] += memo[i][j];
	}

	FOR(i, h)
		FOR(j, w) {
		if (i >= 1 && j >= 1)
			c[i][j] -= c[i - 1][j - 1];

		c[i + 1][j] += c[i][j];
		c[i][j + 1] += c[i][j];
	}


	//display();

	int answer = 0;

	//cerr << get_sum(memo, 1, 1, 2, 3) << endl;
	//cerr << get_sum(c, 1, 1, 2, 3) << endl;

	for (int i0 = 0; i0 < h; i0++)
		for (int j0 = 0; j0 < w; j0++)
			for (int i1 = i0; i1 < h; i1++)
				for (int j1 = j0; j1 < w; j1++)
				{
					//cerr << i0 << " " << j0 << " " << i1 << " " << j1 << ":" << get_sum(c, i0, j0, i1, j1) << endl;

					if (get_sum(memo, i0, j0, i1, j1) == get_sum(c, i0, j0, i1, j1)) {
						//cerr << i0 << " " << j0 << " " << i1 << " " << j1 << ":" << get_sum(c, i0, j0, i1, j1) << endl;
						answer = max(answer, (i1-i0+1) * (j1-j0+1) );
					}
				}

	cout << answer << endl;

	return 0;
}

Submission Info

Submission Time
Task B - チョコレート
User nasatame
Language C++14 (GCC 5.4.1)
Score 100
Code Size 2937 Byte
Status AC
Exec Time 166 ms
Memory 384 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 5
AC × 25
Set Name Test Cases
Sample subtask0_sample-01.txt, subtask0_sample-02.txt, subtask0_sample-03.txt, subtask0_sample-04.txt, subtask0_sample-05.txt
All subtask0_sample-01.txt, subtask0_sample-02.txt, subtask0_sample-03.txt, subtask0_sample-04.txt, subtask0_sample-05.txt, 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
Case Name Status Exec Time Memory
subtask0_sample-01.txt AC 1 ms 256 KB
subtask0_sample-02.txt AC 1 ms 256 KB
subtask0_sample-03.txt AC 1 ms 256 KB
subtask0_sample-04.txt AC 1 ms 256 KB
subtask0_sample-05.txt AC 1 ms 256 KB
subtask1_01.txt AC 1 ms 256 KB
subtask1_02.txt AC 1 ms 256 KB
subtask1_03.txt AC 1 ms 256 KB
subtask1_04.txt AC 1 ms 256 KB
subtask1_05.txt AC 1 ms 256 KB
subtask1_06.txt AC 2 ms 256 KB
subtask1_07.txt AC 1 ms 256 KB
subtask1_08.txt AC 1 ms 256 KB
subtask1_09.txt AC 164 ms 384 KB
subtask1_10.txt AC 24 ms 256 KB
subtask1_11.txt AC 150 ms 384 KB
subtask1_12.txt AC 150 ms 384 KB
subtask1_13.txt AC 150 ms 384 KB
subtask1_14.txt AC 165 ms 384 KB
subtask1_15.txt AC 166 ms 384 KB
subtask1_16.txt AC 144 ms 384 KB
subtask1_17.txt AC 132 ms 384 KB
subtask1_18.txt AC 1 ms 256 KB
subtask1_19.txt AC 1 ms 384 KB
subtask1_20.txt AC 154 ms 384 KB