結果
| 問題 | No.5024 魔法少女うなと宝集め |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-05-02 17:21:09 |
| 言語 | C++17 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,850 bytes |
| 記録 | |
| コンパイル時間 | 890 ms |
| コンパイル使用メモリ | 103,260 KB |
| 実行使用メモリ | 6,400 KB |
| スコア | 510,183 |
| 最終ジャッジ日時 | 2026-05-02 17:21:17 |
| 合計ジャッジ時間 | 8,294 ms |
|
ジャッジサーバーID (参考情報) |
judge2_1 / judge3_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 45 WA * 5 |
ソースコード
#include <iostream>
#include <limits>
#include <vector>
using namespace std;
template<typename T> inline bool chmax(T &a, T b) { return ((a < b) ? (a = b, true) : (false)); }
template<typename T> inline bool chmin(T &a, T b) { return ((a > b) ? (a = b, true) : (false)); }
int main() {
int N, T;
cin >> N >> T;
int a_max = numeric_limits<int>::min();
int max_i = 0;
int max_j = 0;
vector<vector<int>> A(N, vector<int>(N));
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
cin >> A[i][j];
if (A[i][j] > a_max) {
a_max = A[i][j];
max_i = i;
max_j = j;
}
}
}
vector<vector<bool>> visited(N, vector<bool>(N, false));
vector<pair<int, int>> path;
int cur_i = max_i;
int cur_j = max_j;
visited[cur_i][cur_j] = true;
path.push_back(make_pair(cur_i, cur_j));
const int di[4] = {-1, 1, 0, 0};
const int dj[4] = {0, 0, -1, 1};
while ((int)path.size() <= T) {
int next_i = -1;
int next_j = -1;
int best_score = -1;
for (int dir = 0; dir < 4; dir++) {
int ni = cur_i + di[dir];
int nj = cur_j + dj[dir];
if (ni < 0 || ni >= N || nj < 0 || nj >= N) continue;
if (visited[ni][nj]) continue;
if (A[ni][nj] > best_score) {
best_score = A[ni][nj];
next_i = ni;
next_j = nj;
}
}
if (next_i == -1) {
break;
}
cur_i = next_i;
cur_j = next_j;
visited[cur_i][cur_j] = true;
path.push_back(make_pair(cur_i, cur_j));
}
cout << path.size() << endl;
for (const auto &p : path) {
cout << p.first << " " << p.second << endl;
}
return 0;
}