Submission #755710

#TimeUsernameProblemLanguageResultExecution timeMemory
755710DJeniUpMouse (info1cup19_mouse)C++17
29.22 / 100
219 ms344 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=(clock()+rand())%h.size(); while(z1--){ for(int i=1;i<h.size();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 ; }

Compilation message (stderr)

mouse.cpp: In function 'void solve(int)':
mouse.cpp:95:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   95 |             for(int i=1;i<h.size();i++){
      |                         ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...