結果

問題 No.5024 魔法少女うなと宝集め
コンテスト
ユーザー Sqrt10
提出日時 2026-05-02 17:16:58
言語 C++23
(gcc 15.2.0 + boost 1.89.0)
コンパイル:
g++-15 -O2 -lm -std=c++23 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 2,089 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 2,253 ms
コンパイル使用メモリ 332,604 KB
実行使用メモリ 6,400 KB
スコア 1,630,724
最終ジャッジ日時 2026-05-02 17:17:03
合計ジャッジ時間 3,987 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge3_0
純コード判定しない問題か言語
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 50
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp: In function 'int main()':
main.cpp:46:22: warning: 'si1' may be used uninitialized [-Wmaybe-uninitialized]
   46 |         cout << (si2 - si1) * (sj2 - sj1) << endl;
      |                 ~~~~~^~~~~~
main.cpp:24:13: note: 'si1' was declared here
   24 |         int si1, si2, sj1, sj2;
      |             ^~~
main.cpp:46:22: warning: 'si2' may be used uninitialized [-Wmaybe-uninitialized]
   46 |         cout << (si2 - si1) * (sj2 - sj1) << endl;
      |                 ~~~~~^~~~~~
main.cpp:24:18: note: 'si2' was declared here
   24 |         int si1, si2, sj1, sj2;
      |                  ^~~
main.cpp:46:36: warning: 'sj1' may be used uninitialized [-Wmaybe-uninitialized]
   46 |         cout << (si2 - si1) * (sj2 - sj1) << endl;
      |                               ~~~~~^~~~~~
main.cpp:24:23: note: 'sj1' was declared here
   24 |         int si1, si2, sj1, sj2;
      |                       ^~~
main.cpp:46:36: warning: 'sj2' may be used uninitialized [-Wmaybe-uninitialized]
   46 |         cout << (si2 - si1) * (sj2 - sj1) << endl;
      |                               ~~~~~^~~~~~
main.cpp:24:28: note: 'sj2' was declared here
   24 |         int si1, si2, sj1, sj2;
      |                            ^~~

ソースコード

diff #
raw source code

#include <bits/stdc++.h>
using namespace std;

int a[21][21] = {};
int s[22][22] = {};

int sum(int x1, int y1, int x2, int y2) { return s[x2][y2] - s[x1][y2] - s[x2][y1] + s[x1][y1]; }

int main() {
        int n, t;
        cin >> n >> t;
        for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                        cin >> a[i][j];
                }
        }

        for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                        s[i + 1][j + 1] = s[i + 1][j] + s[i][j + 1] - s[i][j] + a[i][j];
                }
        }

        int si1, si2, sj1, sj2;
        int m = 0;

        for (int i1 = 0; i1 < n; i1++) {
                for (int i2 = i1 + 1; i2 <= n; i2++) {
                        for (int j1 = 0; j1 < n; j1++) {
                                for (int j2 = j1 + 1; j2 <= n; j2++) {
                                        if ((i2 - i1) * (j2 - j1) <= t) {
                                                int sum_ = sum(i1, j1, i2, j2);
                                                if (sum_ > m) {
                                                        m = sum_;
                                                        si1 = i1;
                                                        si2 = i2;
                                                        sj1 = j1;
                                                        sj2 = j2;
                                                }
                                        }
                                }
                        }
                }
        }

        cout << (si2 - si1) * (sj2 - sj1) << endl;
        for (int i = si1; i < si2; i++) {
                if ((si1 - i) % 2 == 0) {
                        for (int j = sj1; j < sj2; j++) {
                                cout << i << ' ' << j << endl;
                        }
                } else {
                        for (int j = sj2 - 1; j >= sj1; j--) {
                                cout << i << ' ' << j << endl;
                        }
                }
        }
}
0