Submission #755723

#TimeUsernameProblemLanguageResultExecution timeMemory
755723DJeniUpMouse (info1cup19_mouse)C++17
32.44 / 100
199 ms292 KiB
#include "bits/stdc++.h" #include "grader.h" int query(vector<int> v); typedef long long ll; #define pb push_back vector<int>v,a[5],h,l; ll f[307]; void solve(int n){ for(int i=1;i<=n;i++){ v.pb(i); } for(int i=0;i<n*n;i++){ ll x=(rand()+clock())%n; ll y=(rand()+clock())%n; swap(v[x],v[y]); } ll x=query(v); if(x==n)return ; for(int i=1;i<n;i++){ swap(v[0],v[i]); ll y=query(v); a[y-x+2].pb(i); swap(v[0],v[i]); } if(a[2].size()==0 && a[3].size()==0 && a[4].size()==0){ f[0]=1; for(auto it:a[0]){ f[it]=1; } }else{ for(auto it:a[1]){ f[it]=1; } if(a[4].size()==1){ swap(v[0],v[a[4][0]]); f[0]=1; f[a[4][0]]=1; x+=2; }else{ swap(v[0],v[a[3][0]]); swap(v[0],v[a[3][1]]); ll y=query(v); if(y==n)return ; if(y-x==2){ f[0]=1; f[a[3][0]]=1; x=y; }else if(y-x==3){ f[0]=1; f[a[3][0]]=1; f[a[3][1]]=1; x=y; }else{ swap(v[0],v[a[3][1]]); swap(v[0],v[a[3][0]]); swap(v[0],v[a[3][1]]); swap(v[0],v[a[3][0]]); y=query(v); if(y==n)return ; if(y-x==2){ f[0]=1; f[a[3][1]]=1; x=y; }else if(y-x==3){ f[0]=1; f[a[3][0]]=1; f[a[3][1]]=1; x=y; } } } } h.pb(0); while(h.size()>0){ h.clear(); for(int i=0;i<n;i++){ if(f[i]==0){ h.pb(i); //cout<<i<<" "; } } ll z1=rand()%h.size(); if(h.size()==2)z1=1; while(z1--){ for(int i=h.size()-1;i>0;i--){ swap(v[h[i-1]],v[h[i]]); } if(h.size()!=2)swap(v[h[0]],v[h[h.size()-1]]); } ll y=query(v); if(y==n)return ; if(x!=y){ for(auto i:h){ swap(v[0],v[i]); ll z=query(v); if(z-y==-2){ f[i]=1; } swap(v[0],v[i]); } } } return ; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...