Submission #39704

#TimeUsernameProblemLanguageResultExecution timeMemory
39704igziICC (CEOI16_icc)C++14
100 / 100
169 ms2220 KiB
#include <bits/stdc++.h> #define maxN 101 #include "icc.h" using namespace std; vector <int> x,a,b,v[maxN]; int N,p[maxN]; /*void setRoad(int x,int y){ cout<<x<<" "<<y<<endl; } int query(int A,int B,int a[],int b[]){ for(int i=0;i<A;i++) cout<<a[i]<<" "; cout<<endl; for(int i=0;i<B;i++) cout<<b[i]<<" "; cout<<endl; int c; cin>>c; return c; }*/ int Query(vector <int> a,vector <int> b) { int tmp[2][maxN],i; for (i = 0; i < a.size(); ++i){ tmp[0][i]=a[i]; } for (i = 0; i < b.size(); ++i){ tmp[1][i]=b[i];} query(a.size(),b.size(),tmp[0],tmp[1]); } void formiraj(int n,int d){ a.clear(); b.clear(); for(int i=0;i<n;i++){ int r=i/d; if(r%2) b.push_back(x[i]); else a.push_back(x[i]); } } pair <int,int> resi(vector <int> &a,vector <int> &b){ pair <int,int> ans; ans=make_pair(-1,-1); int i; vector <int> s; int A,B; A=a.size(); B=b.size(); int l=0,d=A-1,m; while(d>l){ m=(l+d)/2; for(i=l;i<=m;i++){ s.push_back(a[i]); } if(Query(b,s)) d=m; else l=m+1; s.clear(); } ans.first=a[l]; l=0,d=B-1; while(d>l){ m=(l+d)/2; for(i=l;i<=m;i++){ s.push_back(b[i]); } if(Query(a,s)) d=m; else l=m+1; s.clear(); } ans.second=b[l]; return ans; } int stepen(int n){ int x=1; while(2*x<n){ x*=2; } return x; } void spoj(int x,int y){ if(y<x) swap(x,y); for(int i=0;i<v[y].size();i++){ v[x].push_back(v[y][i]); p[v[y][i]]=x; } v[y].clear(); } void run(int n){ N=n; int i,A=0,B=0,s; for(i=1;i<=N;i++){ v[i].push_back(i); p[i]=i; } while(n>1){ s=stepen(n); int d=s,j; x.clear(); for(i=1;i<=N;i++){ if(!v[i].empty()) x.push_back(i); } while(d>0){ formiraj(x.size(),d); for (i = 0; i < a.size(); ++i){ for(j=0;j<v[a[i]].size();j++){ if(v[a[i]][j]!=a[i]) a.push_back(v[a[i]][j]); } } for (i = 0; i < b.size(); ++i){ for(j=0;j<v[b[i]].size();j++){ if(v[b[i]][j]!=b[i]) b.push_back(v[b[i]][j]); } } if(Query(a,b)) break; a.clear(); b.clear(); d=d/2; } pair <int,int> r; r=resi(a,b); a.clear(); b.clear(); setRoad(r.first,r.second); spoj(p[r.first],p[r.second]); n--; } }

Compilation message (stderr)

icc.cpp: In function 'int Query(std::vector<int>, std::vector<int>)':
icc.cpp:24:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (i = 0; i < a.size(); ++i){
                 ^
icc.cpp:27:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (i = 0; i < b.size(); ++i){
                 ^
icc.cpp:30:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
icc.cpp: In function 'void spoj(int, int)':
icc.cpp:81:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<v[y].size();i++){
                  ^
icc.cpp: In function 'void run(int)':
icc.cpp:104:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (i = 0; i < a.size(); ++i){
                       ^
icc.cpp:105:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(j=0;j<v[a[i]].size();j++){
              ^
icc.cpp:109:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (i = 0; i < b.size(); ++i){
                 ^
icc.cpp:110:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(j=0;j<v[b[i]].size();j++){
              ^
icc.cpp:90:11: warning: unused variable 'A' [-Wunused-variable]
     int i,A=0,B=0,s;
           ^
icc.cpp:90:15: warning: unused variable 'B' [-Wunused-variable]
     int i,A=0,B=0,s;
               ^
#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...