結果
問題 | No.2753 鳩の巣原理 |
ユーザー |
![]() |
提出日時 | 2024-05-10 22:26:08 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,977 bytes |
コンパイル時間 | 2,301 ms |
コンパイル使用メモリ | 201,504 KB |
最終ジャッジ日時 | 2025-02-21 12:57:50 |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 16 WA * 14 |
ソースコード
#include <bits/stdc++.h>using namespace std;void fast_io() {ios::sync_with_stdio(false);std::cin.tie(nullptr);}bool debug = false;vector<int> cnt;int query(int x) {if (debug) {return cnt[x - 1];} else {cout << "? " << x << endl;int c;cin >> c;return c;}}random_device rd;mt19937 mt(rd());int main() {fast_io();int t = 1;for (; t--;) {int n;if (debug) {uniform_int_distribution<int> dist(2, 100);n = dist(mt);} else {cin >> n;}if (debug) {cnt.resize(n);uniform_int_distribution<int> dist(1, n - 1);for (int i = 0; i < n; i++) {cnt[i] = dist(mt);}sort(cnt.begin(), cnt.end());}int l = 1, r = n;int lcnt = query(l);int rcnt = query(r);//[l, r]に同じ値が含まれるfor (int i = 0; i < 8; i++) {if (rcnt - lcnt >= r - l) {cout << n << " " << l << " " << r << endl;for (int i = 0; i < n; i++) {cout << cnt[i] << " ";}cout << endl;assert(rcnt - lcnt < r - l);}if (l + 1 == r) {int c = query(l);continue;}int mid = (l + r) / 2;int c = query(mid);if (c - lcnt < mid - l) {r = mid;rcnt = c;} else {l = mid;lcnt = c;}}cout << "Yes " << l << " " << r << endl;if (debug) {if (cnt[l - 1] != cnt[r - 1]) {for (int i = 0; i < n; i++) {cout << cnt[i] << " ";}cout << endl;return 0;}}}}