Submission #1573869


Source Code Expand

#include<iostream>
#include<iomanip>
#include<math.h>
#include<vector>
#include<algorithm>
#include<set>
#include<map>
#include<queue>
#include<stack>
#include<string>
#define INF 1000000000ll
#define MOD 1000000007ll
#define EPS 1e-8
#define REP(i,m) for(long long i=0; i<m; ++i)
#define FOR(i,n,m) for(long long i=n; i<m; ++i)
#define DUMP(n,a) for(long long i=0; i<n; ++i) { cout<<a[i]; if(i!=n-1) cout<<" "; } cout<<endl;
#define ALL(v) v.begin(),v.end()
#define pb push_back
using namespace std;
typedef long long ll;
typedef pair<ll, ll> P;
typedef long double ld;
typedef vector<int> vi;
typedef vector<vector<int> > vii;
typedef vector<long long> vl;
typedef vector<vector<long long> > vll;
typedef vector<P> vp;
typedef vector<vector<P> > vpp;
class AccumulSum {
public:
	AccumulSum(int h,int w,vector<vector<ll> >& a) {
		_h=h;
		_w=w;
		_sum.resize(_h+1);
		for(int i=0; i<_h+1; ++i) {
			_sum[i].resize(_w+1);
			for(int j=0; j<_w+1; ++j) {
				if(i==0||j==0) _sum[i][j]=0;
				else _sum[i][j]=a[i-1][j-1];
			}
		}
		for(int i=0; i<_h+1; ++i) {
			for(int j=1; j<_w+1; ++j) _sum[i][j]+=_sum[i][j-1];
		}
		for(int i=0; i<_w+1; ++i) {
			for(int j=1; j<_h+1; ++j) _sum[j][i]+=_sum[j-1][i];
		}
	}
	// the coordinates of ul and dr should be 0-indexed
	long long query(pair<int,int> ul,pair<int,int> dr) {
		ll ret=0;
		ret+=_sum[dr.first+1][dr.second+1];
		ret-=_sum[dr.first+1][ul.second];
		ret-=_sum[ul.first][dr.second+1];
		ret+=_sum[ul.first][ul.second];
		return ret;
	}
private:
	int _h;
	int _w;
	vector<vector<ll> > _sum;
};

int main() {
	ios::sync_with_stdio(false);
	int h,w;
	cin>>h>>w;
	vector<vector<ll> > bl(h,vector<ll>(w,0));
	vector<vector<ll> > wh(h,vector<ll>(w,0));
	REP(i,h) {
		REP(j,w) {
			int c;
			cin>>c;
			if((i+j)%2==0) bl[i][j]=c;
			else wh[i][j]=c;
		}
	}
	AccumulSum bsum(h,w,bl);
	AccumulSum wsum(h,w,wh);
	ll res=0;
	REP(i,h) {
		REP(j,w) {
			FOR(k,i,h) {
				FOR(l,j,w) {
					if(bsum.query(P(i,j),P(k,l))==wsum.query(P(i,j),P(k,l))) {
						res=max(res,(k-i+1)*(l-j+1));
					}
				}
			}
		}
	}
	cout<<res<<endl;
}

Submission Info

Submission Time
Task B - チョコレート
User gazelle
Language C++14 (GCC 5.4.1)
Score 100
Code Size 2162 Byte
Status AC
Exec Time 70 ms
Memory 640 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 61 ms 640 KB
subtask1_10.txt AC 10 ms 384 KB
subtask1_11.txt AC 49 ms 640 KB
subtask1_12.txt AC 49 ms 640 KB
subtask1_13.txt AC 49 ms 640 KB
subtask1_14.txt AC 62 ms 640 KB
subtask1_15.txt AC 63 ms 640 KB
subtask1_16.txt AC 47 ms 640 KB
subtask1_17.txt AC 49 ms 512 KB
subtask1_18.txt AC 1 ms 256 KB
subtask1_19.txt AC 1 ms 256 KB
subtask1_20.txt AC 70 ms 640 KB