Submission #1274739

#TimeUsernameProblemLanguageResultExecution timeMemory
1274739nickkumaMađioničar (COI22_madionicar)C++20
0 / 100
497 ms404 KiB
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define int long long

int n;

bool ask(int i, int sz){
    if(i<1 || i+sz-1>n) return false;
    int resp;
    cout << "? " << i << ' ' << i+sz-1 << '\n' << flush;
    if(!(cin >> resp)) exit(0);

    return resp==1;
}

void sol(){
    cin >> n;

    //even sized palindromes
    int ans=1;
    int sz=2;
    for(int i=1;i<=n;i++){
        if(ask(i,sz)){
            while(ask(i-1,sz+2)){
                i--; sz+=2;
            }
            i++;
            ans=max(ans,sz);
        }
    }

    //odd sized palindromes
    sz=max(3LL,ans);
    if(sz%2==0) sz++;
    for(int i=1;i<=n;i++){
        if(ask(i,sz)){
            while(ask(i-1,sz+2)){
                i--; sz+=2;
            }
            i++;
            ans=max(ans,sz);
        }
    }

    cout << "! " << ans << '\n' << flush;
    return;
}

signed main(){
    int tc=1; 
    // cin >> tc;
    while(tc--) sol();
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...