AtCoder Regular Contest 025

Submission #1672610

Source codeソースコード

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <algorithm>
#include <utility>
#include <functional>
#include <cstring>
#include <queue>
#include <stack>
#include <math.h>
#include <iterator>
#include <vector>
#include <string>
#include <set>
#include <math.h>
#include <iostream>
#include <random>
#include<map>
#include <iomanip>
#include <time.h>
#include <stdlib.h>
#include <list>
#include <typeinfo>
#include <list>
#include <set>
#include <cassert>
#include<fstream>
#include <unordered_map>
#include <cstdlib>
using namespace std;
#define Ma_PI 3.141592653589793
#define eps 0.00000000000000000000000001
#define LONG_INF 3000000000000000000
#define GOLD 1.61803398874989484820458
#define MAX_MOD 1000000007
#define REP(i,n) for(long long i = 0;i < n;++i)                                                                             
#define seg_size 524288
int grid[2][200][200] = {};
int input[200][200] = {};
int main() {
	int h, w;
	cin >> h >> w;
	REP(i, h) {
		REP(q, w) {
			cin >> input[i][q];
		}
	}
	for (int t = 0; t < 2; ++t) {
		for (int i = 0;i < h;++i) {
			for (int q = 0;q < w;++q) {
				if (q != 0) grid[t][i][q] = grid[t][i][q - 1];
				if ((i + q + t) % 2 == 0) grid[t][i][q] += input[i][q];
			}
		}
		for (int i = 0;i < w;++i) {
			for (int q = 0;q < h;++q) {
				if (q != 0) grid[t][q][i] += grid[t][q - 1][i];
			}
		}
	}
	int ans = 0;
	for (int left_l = 0;left_l < h;++left_l) {
		for (int left_r = left_l + 1;left_r <= h;++left_r) {
			for (int right_l = 0;right_l < w;++right_l) {
				for (int right_r = right_l + 1;right_r <= w;++right_r) {
					long long a = grid[0][left_r - 1][right_r - 1], b = grid[1][left_r - 1][right_r - 1];
					if (right_l - 1 >= 0) {
						a -= grid[0][left_r - 1][right_l - 1];
						b -= grid[1][left_r - 1][right_l - 1];
					}
					if (left_l - 1 >= 0) {
						a -= grid[0][left_l - 1][right_r - 1];
						b -= grid[1][left_l - 1][right_r - 1];
					}
					if (right_l - 1 >= 0 && left_l - 1 >= 0) {
						a += grid[0][left_l - 1][right_l - 1];
						b += grid[1][left_l - 1][right_l - 1];
					}
					if (a == b) {
						ans = max(ans, (left_r - left_l)*(right_r - right_l));
					}
				}
			}
		}
	}
	cout << ans << endl;
	return 0;
}

Submission

Task問題 B - チョコレート
User nameユーザ名 kotamanegi
Created time投稿日時
Language言語 C++14 (GCC 5.4.1)
Status状態 AC
Score得点 100
Source lengthソースコード長 2300 Byte
File nameファイル名
Exec time実行時間 82 ms
Memory usageメモリ使用量 640 KB

Test case

Set

Set name Score得点 / Max score Cases
Sample - subtask0_sample-01.txt,subtask0_sample-02.txt,subtask0_sample-03.txt,subtask0_sample-04.txt,subtask0_sample-05.txt
All 100 / 100 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

Test case

Case name Status状態 Exec time実行時間 Memory usageメモリ使用量
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 80 ms 512 KB
subtask1_10.txt AC 13 ms 384 KB
subtask1_11.txt AC 67 ms 512 KB
subtask1_12.txt AC 67 ms 512 KB
subtask1_13.txt AC 67 ms 512 KB
subtask1_14.txt AC 81 ms 512 KB
subtask1_15.txt AC 82 ms 512 KB
subtask1_16.txt AC 65 ms 640 KB
subtask1_17.txt AC 65 ms 512 KB
subtask1_18.txt AC 1 ms 256 KB
subtask1_19.txt AC 1 ms 512 KB
subtask1_20.txt AC 73 ms 512 KB