Submission #220416

#TimeUsernameProblemLanguageResultExecution timeMemory
2204162fat2codeCave (IOI13_cave)C++17
0 / 100
391 ms632 KiB
#include <bits/stdc++.h> #include "cave.h" #define ll long long #define ld long double #define all(a) (a).begin(), (a).end() #define sz() size() #define fr first #define sc second #define pi pair<int,int> #define pii pair<pair<int,int>,int> #define mp make_pair //#define int long long #define rc(s) return cout<<s,0 #define rcc(s) cout<<s,exit(0) using namespace std; const int mod=1e9+7; const int modp=1999999973; const int modulo=998244353; int LAST=0; vector<int>still_not_found; vector<pair<int,int>>found; void exploreCave(int N){ ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0); srand(chrono::steady_clock::now().time_since_epoch().count()); int ask[N]; for(int i=0;i<N;i++) ask[i]=0; for(int i=0;i<N;i++) still_not_found.push_back(i); int curr=0; while(still_not_found.size()){ curr++; int l=0; int r=still_not_found.size()-1; while(true){ if(l==r){ int Q3=tryCombination(ask); if(Q3==-1) Q3=(N+1); if(Q3<curr) ask[still_not_found[l]]^=1; found.push_back({still_not_found[l],ask[still_not_found[l]]}); still_not_found.erase(still_not_found.begin()+l); break; } int Q1=0; int mid=l+(r-l)/2; if(LAST==0){ Q1=tryCombination(ask); if(Q1==-1) Q1=(N+1); } else Q1=LAST; for(int i=0;i<=mid;i++){ ask[still_not_found[i]]^=1; } int Q2=tryCombination(ask); if(Q2==-1) Q2=(N+1); if((Q1>=curr && Q2>=curr) || (Q1<curr && Q2<curr)){ l=mid+1; } else{ r=mid; } LAST=Q2; } } int ans1[N]; for(int i=0;i<N;i++){ ans1[i]=0; } for(int i=0;i<N;i++){ ans1[found[i].fr]=i; } answer(ask,ans1); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...