結果
問題 | No.607 開通777年記念 |
ユーザー |
|
提出日時 | 2019-09-10 06:30:45 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 974 ms / 2,000 ms |
コード長 | 1,819 bytes |
コンパイル時間 | 768 ms |
コンパイル使用メモリ | 77,844 KB |
実行使用メモリ | 11,264 KB |
最終ジャッジ日時 | 2024-07-02 16:12:27 |
合計ジャッジ時間 | 3,392 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 10 |
ソースコード
#include <iostream>#include <algorithm>#include <vector>#include <set>#include <queue>#include <map>#include <tuple>#define FOR0(var, max) for (ui (var) = 0; (var) < (max); ++(var))#define FOR_INV(var, min, max) for (ui (var) = (max) - 1; (var) + 1 > (min); --(var))#define FORITER(var, iter) for (auto (iter) = (var).begin(); (iter) != (var).end(); (iter)++)#define FORITER_INV(var, iter) for (auto (iter) = (var).rbegin(); (iter) != (var).rend(); (iter)++)using namespace std;using uc = unsigned char;using ui = unsigned int;using ul = unsigned long long int;using si = signed int;const static ui NMAX = 1000;const static ui MMAX = 1000;static ui N, M;static ui Train[MMAX][NMAX];static si Differences[MMAX][NMAX];static si Sums[NMAX];void print(void) {FOR0(i, M) {FOR0(j, N) {cout << Train[i][j] << " ";}cout << endl;}}bool solve(void) {FOR0(j, N) {Train[0][j] = Differences[0][j];}FOR0(_i, M - 1) {ui i = _i + 1;FOR0(j, N) {Train[i][j] = Differences[i][j] + Train[i - 1][j];}}FOR0(i, M) {Sums[0] = Train[i][0];FOR0(_j, N - 1) {ui j = _j + 1;Sums[j] = Sums[j - 1] + Train[i][j];}FOR0(j, N) {FOR0(_k, N - j) {ui k = _k + j;if (j == k) {if (Train[i][j] == 777) {return true;}} else {if (j == 0) {if (Sums[k] == 777) {return true;}} else {if (Sums[k] - Sums[j - 1] == 777) {return true;}}}}}}return false;}int main(void) {cin >> N >> M;FOR0(i, M) {FOR0(j, N) {cin >> Differences[i][j];}}cout << (solve() ? "YES" : "NO") << endl;return 0;}