Submission #1287211

#TimeUsernameProblemLanguageResultExecution timeMemory
1287211ayhamzaiddMađioničar (COI22_madionicar)C++20
0 / 100
481 ms1200 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<ll,ll>
#define fi first
#define se second

const ll N=1e5+5,MOD=1e9+7,INF=1e18;

ll a[N];

bool q(int l,int r){
    cout<<"? "<<l<<' '<<r<<endl;
    int ret;cin>>ret;
    return ret;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    
    int n;cin>>n;
    int len=1,ans=1;
    a[n+1]=0;
    for(int i=1; i<=n; i++)a[i]=i;
    for(int i=2; i<=n; i++){
        if(q(i-1,i)){
            a[i]=a[i-1];
            len++;
        }
        else len=1;
        ans=max(len,ans);
    }

    for(int i=2; i<=n; i++){
        if(a[i]==a[i-1])continue;
        int l=i-1,r=i;
        while(a[r+1]==a[r] && r+1<=n)r++;

        if(r+1<=n)r++;

        while(1){
            while(l-1>=1 && r+1<=n ){
                if(a[l]!=a[l-1] || a[r]!=a[r+1])break;
                l--;
                r++;
            }
            

            if(q(l,r)){
                ans=max(ans,r-l+1);
                l--;
                r++;
                if(l<1 || r>n)break;
            }
            else break;
        }
    }
    cout<<"! "<<ans<<endl;

}
//aabbcc
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...