Submission #1274211

#TimeUsernameProblemLanguageResultExecution timeMemory
1274211ezrapoMađioničar (COI22_madionicar)C++20
100 / 100
540 ms12940 KiB
#include <bits/stdc++.h>
using namespace std;
int32_t main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n; cin >> n;
    map<pair<int, int>, bool> mp;
    auto query=[&](int l, int r) {
        auto it=mp.find({l, r});
        if (it!=mp.end()) return it->second;
        cout << "? " << l << " " << r << endl;
        cout.flush();
        int res;
        if (!(cin >> res)) exit(0);
        return mp[{l, r}]=(res==1);
    };
    auto ans=[&](int answer) {
        cout << "! " << answer << endl;
        cout.flush();
        exit(0);
    };
    int best=1;
    {
        int l=1;
        for (int r=3; r<=n; r++) {
            if (l==0) l++;
            else if (query(l, r)) {
                best=max(best, r-l+1);
                l--;
            } else l++;
        }
    }
    {
        int l=1;
        for (int r=2; r<=n; r++) {
            if (l==0) l++;
            else if (query(l, r)) {
                best=max(best, r-l+1);
                l--;
            } else l++;
        }
    }
    ans(best);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...