Submission #1205881

#TimeUsernameProblemLanguageResultExecution timeMemory
1205881Adeeb_obedoCombo (IOI18_combo)C++20
30 / 100
9 ms676 KiB
#include<bits/stdc++.h> #define int long long #define ld double #define _1 first #define _2 second #define yes cout<<"Yes\n" #define nah cout<<"No\n" #define FFF ios_base::sync_with_stdio(0);cin.tie(0); #define ipr pair<int,int> #define ret return #define intt int32_t #define mid ((l+r)/2) #define pb push_back #define lll __int128 #include "combo.h" using namespace std; int tst, ts; intt mo = 1e9+7, dx[] = {0, 1, 0, -1}, dy[] = {-1, 0, 1, 0}; int mul( int x, int y ) { ret ( ( x % mo ) * ( y % mo ) ) % mo; ret x*y; } int pwo( int x, int y ) { int res = 1; for( int i = 63; i + 1; i-- ) res = mul( res, res * ( ( 1ll << i )&y ? x : 1 ) ); ret res; } int dvii( int x, int y ) { ret mul( x, pwo( y, mo - 2 ) ); } int oo( char x ) { ret ( int )x - '0'; } int lgg( int x, int y ) { int u = 0; while( x ) { u++; x /= y; } ret u; } int mun( int x, int y ) { while( x < y )x += mo; ret ( x - y ) % mo; } int add( int x, int y ) { ret x + y - ( mo * ( x + y >= mo ) ); ret x + y; } int lcm( int x, int y ) { ret ( x * y ) / __gcd( x, y ); } #define endl '\n'; const int M =1007, N = 2e5 + 7, N2 = 5e3 + 7, inf = 2e18 + 7; int n; string guess_sequence(intt Nn){ n=Nn; srand(time(0)); string s="",x="ABXY"; if(press("AB")) s+=(press("A")?'A':'B'); else s+=(press("X")?'X':'Y'); for(int i=0;i<4;i++) if(x[i]==s[0]) swap(x[i],x[3]); x.pop_back(); set<pair<int,string>>st; for(int i=1;i<n;i++){ sort(x.begin(),x.end()); swap(x[2],x[rand()%3]); st.insert({i,x}); } while(st.size()>1){ /*cout<<endl; for(auto i:st) cout<<i._1<<" "<<i._2<<endl; cout<<endl;*/ pair<int,string> a=*st.begin(),b=*(++st.begin()); st.erase(a),st.erase(b); while(s.size()<=b._1) s+=s[0]; string s1=s,s2=s,s3=s,s4=s; s1[b._1]=b._2[0],s1[a._1]=a._2[0]; s2[b._1]=b._2[0],s2[a._1]=a._2[1]; s3[b._1]=b._2[1],s3[a._1]=a._2[0]; s4[b._1]=b._2[1],s4[a._1]=a._2[1]; if(b._2.size()<3){ int o=press(s1); if(o==s1.size()){ s=s1; continue; } if(o<a._1+1){ s=s2; s[b._1]=s[0]; st.insert(b); } if(o>a._1) s=s3; } else if(a._2.size()<3){ int o=press(s1+s3); if(o==s1.size()){ s=s1; s[b._1]=s[0]; b._2.pop_back(); swap(b._2[1],b._2[rand()%2]); st.insert(b); continue; } if(o<a._1+1){ s[a._1]=a._2[1]; s[b._1]=s[0]; st.insert(b); } if(o>a._1){ s=s1; s[b._1]=b._2[2]; } } else{ int o=press(s1+s2+s3+s4); if(o==s1.size()){ s=s1; b._2.pop_back(); a._2.pop_back(); swap(b._2[1],b._2[rand()%2]); swap(a._2[1],a._2[rand()%2]); st.insert(a),st.insert(b); continue; } if(o<a._1+1){ s[b._1]=s[0]; s[a._1]=a._2[2]; st.insert(b); } if(o>a._1){ a._2.pop_back(); swap(a._2[1],a._2[rand()%2]); st.insert(a); s[a._1]=s[0]; s[b._1]=b._2[2]; } } } if(s.size()<n) s+=s[0]; if(st.size()){ pair<int,string>p=*st.begin(); string ss=s; s[p._1]=p._2[0],ss[p._1]=p._2[1]; if(p._2.size()==2){ if(press(ss)==n) swap(s,ss); } else{ if(press(ss+s)<n) s[p._1]=p._2[2]; else{ if(press(ss)==n) swap(s,ss); } } } //cout<<n<<endl; ret s; } /* void solve(){ } intt main() { FFF // freopen("fcolor.in", "r", stdin); // freopen("fcolor.out", "w", stdout); tst = 1; //cin >> tst; for ( ts = 1; ts <= tst; ts++ ){ solve(); } } */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...