結果
問題 | No.1830 Balanced Majority |
ユーザー |
👑 |
提出日時 | 2022-01-09 10:53:30 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 23 ms / 2,000 ms |
コード長 | 675 bytes |
コンパイル時間 | 347 ms |
コンパイル使用メモリ | 29,696 KB |
実行使用メモリ | 25,592 KB |
平均クエリ数 | 7.42 |
最終ジャッジ日時 | 2024-11-14 10:17:20 |
合計ジャッジ時間 | 2,585 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 25 |
ソースコード
#include <stdio.h> int main() { int N; scanf("%d", &N); int x, y; printf("? 1\n"); fflush(stdout); scanf("%d", &x); printf("? %d\n", N - 1); fflush(stdout); scanf("%d", &y); if ((x == 1 && y == N / 2) || (x == 0 && y == N / 2 - 1)) { printf("! 2 %d\n", N - 1); fflush(stdout); return 0; } int l = 1, r = N - 1, m, z; while (l < r) { m = (l + r) / 2; printf("? %d\n", m); fflush(stdout); scanf("%d", &z); if (z * 2 == m) { l = m; break; } else if ((x == 1 && z * 2 > m) || (x == 0 && z * 2 < m)) l = m + 1; else r = m - 1; } if (l >= N / 2) printf("! 1 %d\n", l); else printf("! %d %d\n", l + 1, N); fflush(stdout); return 0; }