Submission #32601636
Source Code Expand
// vim:set foldmethod=marker foldlevel=0: /* include {{{ */ #include <bits/stdc++.h> #include <atcoder/all> #ifdef _DEBUG #include "./debug.hpp" #else #define debug(...) #endif /* }}} */ /* utility {{{*/ using namespace atcoder; using namespace std; #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) #define rep2(i, s, n) for (ll i = (s); i < (ll)(n); i++) // 注意: rep, rep2と同じ範囲を逆順にしたもの #define rrep(i, n) for (ll i = (n)-1; i >= 0; i--) #define rrep2(i, s, n) for (ll i = (n)-1; i >= (ll)(s); i--) using mint = modint998244353; /* using mint = modint1000000007; */ using ll=long long; using vll=vector<ll>; using vvll=vector<vll>; using vvvll=vector<vvll>; using vs=vector<string>; using vvs=vector<vs>; using vb=vector<bool>; using vvb=vector<vb>; using vmd=vector<mint>; using vvmd=vector<vmd>; using vvvmd=vector<vvmd>; using P = pair<ll,ll>; using vp=vector<P>; using vvp=vector<vp>; template <typename T> bool chmin(T &a, const T& b){if(a > b){a = b;return true;}return false;} template <typename T> bool chmax(T &a, const T& b){if(a < b){a = b;return true;}return false;} const ll INF = 1000000000000000000ll; string YesNo(bool flag) { return flag ? "Yes" : "No"; } /* }}} */ ///////////////////////////////////////////////////////////////// ll d(ll u, ll v) { u++; v++; cout<<"? "<<u<<" "<<v<<endl; ll ret; cin>>ret; return ret; } int main() { ll n; cin>>n; vll d0(n),d1(n); rep(i,n){ if (i==0||i==1)continue; d0[i] = d(0, i); } rep(i,n){ if (i==0||i==1)continue; d1[i] = d(1, i); } bool diff1=false,diff1under=true; // 0,1が隣接するかをチェック rep(i,n){ if (i==0||i==1)continue; if (abs(d0[i]-d1[i]) > 1) { diff1under = false; break; } if (abs(d0[i]-d1[i]) == 1) { diff1 = true; } } bool neib = false; neib = diff1 && diff1under; // 0 - x - y - 1のパターンがあるかをチェック { ll x=-1,y=-1; rep(i,n){ if (d0[i] == 1ll && d1[i] == 2ll) { x = i; break; } } rep(i,n){ if (d0[i] == 2ll && d1[i] == 1ll) { y = i; } } if (x>0&&y>0) { ll dxy = d(x,y); if (dxy == 1ll) { neib = false; } } } ll ans; if (neib) { ans = 1ll; } else { ans = INF; rep(i,n){ if (i==0||i==1)continue; chmin(ans, d0[i]+d1[i]); } } cout<<"! "<<ans<<endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | C - Tree Queries |
User | hira0404 |
Language | C++ (GCC 9.2.1) |
Score | 500 |
Code Size | 2574 Byte |
Status | AC |
Exec Time | 14 ms |
Memory | 3860 KiB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 500 / 500 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 00_sample_00.txt |
All | 00_sample_00.txt, 01_shnd_00.txt, 01_shnd_01.txt, 01_shnd_02.txt, 01_shnd_03.txt, 02_srnd_00.txt, 02_srnd_01.txt, 02_srnd_02.txt, 02_srnd_03.txt, 02_srnd_04.txt, 02_srnd_05.txt, 02_srnd_06.txt, 03_rnd_00.txt, 03_rnd_01.txt, 03_rnd_02.txt, 03_rnd_03.txt, 03_rnd_04.txt, 03_rnd_05.txt, 03_rnd_06.txt, 04_killer_00.txt, 04_killer_01.txt, 04_killer_02.txt, 04_killer_03.txt, 04_killer_04.txt, 04_killer_05.txt, 04_killer_06.txt, 04_killer_07.txt, 04_killer_08.txt, 04_killer_09.txt, 04_killer_10.txt, 04_killer_11.txt, 04_killer_12.txt, 04_killer_13.txt, 04_killer_14.txt, 04_killer_15.txt, 04_killer_16.txt, 04_killer_17.txt, 05_max_00.txt, 05_max_01.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_sample_00.txt | AC | 12 ms | 3808 KiB |
01_shnd_00.txt | AC | 5 ms | 3764 KiB |
01_shnd_01.txt | AC | 6 ms | 3824 KiB |
01_shnd_02.txt | AC | 6 ms | 3756 KiB |
01_shnd_03.txt | AC | 6 ms | 3836 KiB |
02_srnd_00.txt | AC | 6 ms | 3760 KiB |
02_srnd_01.txt | AC | 7 ms | 3732 KiB |
02_srnd_02.txt | AC | 8 ms | 3840 KiB |
02_srnd_03.txt | AC | 8 ms | 3764 KiB |
02_srnd_04.txt | AC | 9 ms | 3848 KiB |
02_srnd_05.txt | AC | 8 ms | 3692 KiB |
02_srnd_06.txt | AC | 8 ms | 3772 KiB |
03_rnd_00.txt | AC | 10 ms | 3736 KiB |
03_rnd_01.txt | AC | 14 ms | 3780 KiB |
03_rnd_02.txt | AC | 10 ms | 3804 KiB |
03_rnd_03.txt | AC | 12 ms | 3848 KiB |
03_rnd_04.txt | AC | 12 ms | 3688 KiB |
03_rnd_05.txt | AC | 14 ms | 3856 KiB |
03_rnd_06.txt | AC | 13 ms | 3732 KiB |
04_killer_00.txt | AC | 9 ms | 3848 KiB |
04_killer_01.txt | AC | 10 ms | 3796 KiB |
04_killer_02.txt | AC | 9 ms | 3848 KiB |
04_killer_03.txt | AC | 13 ms | 3788 KiB |
04_killer_04.txt | AC | 10 ms | 3800 KiB |
04_killer_05.txt | AC | 11 ms | 3788 KiB |
04_killer_06.txt | AC | 14 ms | 3768 KiB |
04_killer_07.txt | AC | 10 ms | 3776 KiB |
04_killer_08.txt | AC | 11 ms | 3812 KiB |
04_killer_09.txt | AC | 12 ms | 3800 KiB |
04_killer_10.txt | AC | 10 ms | 3792 KiB |
04_killer_11.txt | AC | 9 ms | 3852 KiB |
04_killer_12.txt | AC | 12 ms | 3804 KiB |
04_killer_13.txt | AC | 10 ms | 3744 KiB |
04_killer_14.txt | AC | 13 ms | 3824 KiB |
04_killer_15.txt | AC | 9 ms | 3784 KiB |
04_killer_16.txt | AC | 10 ms | 3860 KiB |
04_killer_17.txt | AC | 11 ms | 3796 KiB |
05_max_00.txt | AC | 12 ms | 3804 KiB |
05_max_01.txt | AC | 11 ms | 3788 KiB |