Submission #990561

#TimeUsernameProblemLanguageResultExecution timeMemory
990561alexddMađioničar (COI22_madionicar)C++17
100 / 100
1297 ms1552 KiB
#include<bits/stdc++.h> using namespace std; int n,cntq; string s; bool verif(int le, int ri) { for(int i=0;i<=ri-le;i++) if(s[le+i]!=s[ri-i]) return 0; return 1; } int p[100005]; bool query(int le, int ri) { if(le<1 || ri>n || le>ri) return 0; if(le==ri) return 1; cntq++; //return verif(le,ri); if(cntq>200000) { while(1); } int aux; cout<<"? "<<le<<" "<<ri<<endl; cin>>aux; return aux; } signed main() { cin>>n; /*s.resize(n+2); for(int i=1;i<=n;i++) { int c = rand()%26; s[i] = c+'a'; }*/ int mxm=1; for(int i=1;i<n;i++) { p[i] = mxm/2; while(query(i-p[i],i+1+p[i])) p[i]++; mxm = max(mxm, 2*p[i]); } for(int i=1;i<=n;i++) { p[i] = (mxm+1)/2; while(query(i-p[i],i+p[i])) p[i]++; mxm = max(mxm, 2*p[i]-1); } cout<<"! "<<mxm<<endl; // cout<<cntq<<" queries\n"; return 0; } /** neven 1 2 3 4 5 6 7 8 9 l r a b c b a 1 2 3 4 5 6 7 8 9 l r a b c c b a */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...