結果
| 問題 |
No.1834 1D Gravity
|
| コンテスト | |
| ユーザー |
riano
|
| 提出日時 | 2022-01-23 16:25:33 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 846 bytes |
| コンパイル時間 | 204 ms |
| コンパイル使用メモリ | 32,640 KB |
| 実行使用メモリ | 18,888 KB |
| 最終ジャッジ日時 | 2024-11-29 17:52:59 |
| 合計ジャッジ時間 | 47,386 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 10 WA * 1 TLE * 15 |
ソースコード
#include <stdio.h>
void chmax(int* a, int b)
{
if (*a < b) *a = b;
}
int main()
{
int i, N, m[200001], p[200001];
scanf("%d", &N);
for (i = 1; i <= N; i++) {
scanf("%d", &(m[i]));
p[m[i]] = i;
}
int j, k, max[200001], len, num;
for (i = 1; i <= N; i++) max[i] = m[i];
for (k = 1; k <= 200001; k++) {
for (i = 1; i <= N; i++) {
if (p[i] == 1) p[i] = 2;
else if (p[i] == N) p[i] = N - 1;
else if (max[p[i]-1] > max[p[i]+1]) p[i]--;
else p[i]++;
}
for (i = 1; i <= N; i++) max[i] = 0;
for (i = 1; i <= N; i++) chmax(&(max[p[i]]), i);
for (i = 1, num = 0, len = 0; i <= N; i = j) {
if (max[i] == 0) {
j = i + 1;
continue;
}
num++;
for (j = i + 1; j <= N && max[j] != 0; j++);
chmax(&len, j - i);
}
if (len == 2) break;
}
printf("%d %d\n", k, num);
fflush(stdout);
return 0;
}
riano