Submission #620513

#TimeUsernameProblemLanguageResultExecution timeMemory
620513kshitij_sodaniMinerals (JOI19_minerals)C++14
80 / 100
75 ms5724 KiB
//#pragma GCC optimize("Ofast,unroll-loops") #include <bits/stdc++.h> using namespace std; typedef long long llo; #define mp make_pair #define pb push_back #define a first #define b second #define endl '\n' #include "minerals.h" vector<pair<int,int>> ans; int cur=0; set<int> xx; mt19937 rng; void solve(vector<int> aa,vector<int> bb,int y=0){ /*for(auto j:aa){ cout<<j<<"."; } cout<<endl; for(auto j:bb){ cout<<j<<"."; } cout<<endl;*/ if(aa.size()==1){ //cout<<aa[0]<<":"<<bb[0]<<endl; ans.pb({aa[0],bb[0]}); return; } //int cur=0; vector<int> cc; vector<int> dd; vector<int> ee; vector<int> ff; int x=aa.size()/2; if(aa.size()>4){ x+=(aa.size()*2)/18; } /* if(aa.size()>64){ x+=10; } else if(aa.size()> else if(aa.size()>16){ x+=4; } else if(aa.size()>8){ x+=2;//=2; } else if(aa.size()>2){ x++; }*/ for(int i=0;i<aa.size();i++){ if(i<x){ dd.pb(aa[i]); continue; } cur=Query(aa[i]); xx.insert(aa[i]); cc.pb(aa[i]); } for(int i=0;i+1<bb.size();i++){ int cur2=Query(bb[i]); /* if(bb.size()==4){ cout<<cur<<","<<cur2<<","<<bb[i]<<endl; }*/ if(y==0 and cur2==cur){ ee.pb(bb[i]); continue; } else if(y==1 and cur2!=cur){ cur=cur2; ee.pb(bb[i]); continue; } //Query(bb[i]); cur=cur2; ff.pb(bb[i]); } if(ee.size()<cc.size()){ ee.pb(bb.back()); } else{ ff.pb(bb.back()); } /*for(auto j:cc){ cur=Query(j); }*/ /*for(auto j:cc){ cout<<j<<","; } cout<<endl; for(auto j:ee){ cout<<j<<","; } cout<<endl<<endl;;*/ solve(cc,ee,y^1); solve(dd,ff,y); } void Solve(int n) { vector<int> aa; vector<int> bb; int cur5=0; for(int i=1;i<=2*n;i++){ int cur2=Query(i); if(cur2>cur5){ aa.pb(i); cur5=cur2; continue; } bb.pb(i); Query(i); } /* for(auto j:aa){ Query(j); } */ solve(aa,bb,1); for (int i=0; i<n;i++) { Answer(ans[i].a,ans[i].b); } }

Compilation message (stderr)

minerals.cpp: In function 'void solve(std::vector<int>, std::vector<int>, int)':
minerals.cpp:52:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |  for(int i=0;i<aa.size();i++){
      |              ~^~~~~~~~~~
minerals.cpp:61:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |  for(int i=0;i+1<bb.size();i++){
      |              ~~~^~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...