結果
| 問題 | No.511 落ちゲー 〜手作業のぬくもり〜 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-03-29 12:30:17 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,427 bytes |
| 記録 | |
| コンパイル時間 | 2,226 ms |
| コンパイル使用メモリ | 193,004 KB |
| 実行使用メモリ | 12,700 KB |
| 最終ジャッジ日時 | 2025-03-29 12:30:27 |
| 合計ジャッジ時間 | 9,436 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 5 |
| other | AC * 24 TLE * 1 -- * 7 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:39:11: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
39 | scanf ("%d%d%lld", &n, &w, &h);
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
main.cpp:43:15: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
43 | scanf ("%d%d%d", &a, &b, &x);
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include <bits/stdc++.h>
using namespace std;
const int W = 1e5 + 5;
int n, w, score[2];
long long h, tree[4 * W];
void update (int l, int r, int s, int t, int k, int x)
{
if (s == t)
{
tree[x] += k;
return;
}
int mid = (s + t) / 2;
if (l <= mid) update (l, r, s, mid, k, x * 2);
if (r > mid) update (l, r, mid + 1, t, k, x * 2 + 1);
tree[x] = max(tree[2 * x], tree[2 * x + 1]);
}
int query (int l, int r, int s, int t, int x)
{
if (s == t)
{
tree[x] = -1e9;
return 1;
}
int ans = 0, mid = (s + t) / 2;
if (l <= mid && tree[x * 2] >= h) ans += query (l, r, s, mid, x * 2);
if (r > mid && tree[x * 2 + 1] >= h) ans += query (l, r, mid + 1, t, x * 2 + 1);
return ans;
}
signed main()
{
//freopen ("game.in", "r", stdin);
//freopen ("game.out", "w", stdout);
scanf ("%d%d%lld", &n, &w, &h);
for (int i = 1; i <= n; i++)
{
int a, b, x;
scanf ("%d%d%d", &a, &b, &x);
if (score[0] + score[1] == w) break;
update (x, a + x - 1, 1, w, b, 1);
score[i % 2] += query (x, a + x - 1, 1, w, 1);
}
/*if (score[1] > score[0]) printf ("A\n%d %d", score[1], score[0]);
else if (score[1] < score[0]) printf ("B\n%d %d", score[1], score[0]);
else printf ("DRAW\n%d %d", score[1], score[0]);*/
if (score[1] > score[0]) printf ("A");
else if (score[1] < score[0]) printf ("B");
else printf ("DRAW");
return 0;
}