Submission #993133

#TimeUsernameProblemLanguageResultExecution timeMemory
993133Yazan_SACave (IOI13_cave)C++14
100 / 100
146 ms856 KiB
#include "cave.h" #include<bits/stdc++.h> using namespace std; // int n=11,tot; // int S[]={1 ,1,1,1,1,0,0,0,0,0,0}; // int D[]={10,9,8,7,0,1,2,3,4,5,6}; // int F[11]={}; // int tryCombination(int s[]){ // cout<<"try: \n"; // for(int i=0; i<n; i++)cout<<s[i]<<' ';cout<<'\n'; // for(int i=0; i<n; i++)cout<<S[i]<<' ';cout<<'\n'; // cout<<endl; // tot++; // int ac=0; // for(int i=0; i<n; i++){ // if(s[F[i]]==S[F[i]])ac++; // else break; // } // cout<<"C "<<ac<<endl; // return (ac==n ? -1 : ac); // } int n2; int ask(int x[]){ int ts=tryCombination(x); if(ts==-1)return n2; return ts; } // void answer(int s[], int d[]){ // cout<<"try: \n"; // for(int i=0; i<n; i++)cout<<s[i]<<' ';cout<<'\n'; // for(int i=0; i<n; i++)cout<<S[i]<<' ';cout<<'\n'; // cout<<endl; // cout<<"try: \n"; // for(int i=0; i<n; i++)cout<<d[i]<<' ';cout<<'\n'; // for(int i=0; i<n; i++)cout<<D[i]<<' ';cout<<'\n'; // if(ask(s)==n && equal(d, d + sizeof d / sizeof *d, D))cout<<"YES"; // else cout<<"NO"; // cout<<endl<<tot; // } void exploreCave(int N) { n2=N; int d[N]={},s[N]={}; bool dn[N]={}; if(N==1){ if(ask(s)!=1)s[0]=1; answer(s,d); return; } int ts=ask(s),ts2; for(int i=0; i<N; i++){ int l=0,r=N-1; while(l<=r){ if(l==r){ // cout<<"FOUND "<<i<<" in "<<l<<endl; dn[l]=1; d[l]=i; // s[l]^=1; if(ts2<=i)s[l]^=1; ts=ask(s); break; } int md=(l+r)/2; for(int j=l; j<=md; j++){ if(dn[j])continue; s[j]^=1; } ts2=ask(s); // cout<<ts<<" # "<<l<<' '<<md<<' '<<r<<" !! ";for(int i=0; i<N; cout<<s[i++]<<' ');cout<<"!! "<<ts2<<endl; if((ts<=i && ts2>=i+1) || (ts>=i+1 && ts2<=i)){ r=md; ts=ts2; } else{ l=md+1; } } } answer(s,d); } // signed main(){ // for(int i=0; i<n; i++){ // F[D[i]]=i; // } // for(int i=0; i<n; i++)cout<<F[i]<<' '; // cout<<endl; // exploreCave(n); // }
#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...