Submission #986319

#TimeUsernameProblemLanguageResultExecution timeMemory
986319AlphaMale06ICC (CEOI16_icc)C++17
90 / 100
97 ms640 KiB
#include <bits/stdc++.h> #include "icc.h" using namespace std; const int N = 101; int p[N], sz[N]; vector<int> comp[N]; int find(int v){ if(p[v]==v)return v; return p[v]=find(p[v]); } void merge(int v, int u){ v=find(v); u=find(u); if(u==v)return; if(sz[u]<sz[v])swap(u, v); p[v]=u; sz[u]+=sz[v]; for(int e : comp[v])comp[u].push_back(e); } int genrand(){ int ret=0; for(int i=0; i< 10; i++){ ret+=(1<<i) * (rand()%2); } return ret; } void run(int n){ for(int i=1; i<=n; i++){ p[i]=i; sz[i]=1; comp[i].push_back(i); } for(int i=0; i< n-1; i++){ set<int> st; for(int j=1; j<=n; j++)st.insert(find(j)); vector<int> a; for(int i=1; i< a.size(); i++){ int ind = genrand()%(i+1); swap(a[ind], a[i]); } for(auto p : st)a.push_back(p); vector<int> st1, st2; for(int j=0; j<7; j++){ for(int k=0; k<a.size(); k++){ int x = k>>j; if(x&1){ for(int e : comp[a[k]])st1.push_back(e); } else{ for(int e : comp[a[k]])st2.push_back(e); } } int sz1=st1.size(), sz2=st2.size(); int fst[sz1], scd[sz2]; for(int i=0; i< sz1; i++)fst[i]=st1[i]; for(int i=0; i< sz2; i++)scd[i]=st2[i]; if(query(sz1, sz2, fst, scd))break; st1.clear(); st2.clear(); } vector<int> nscd = st2; int sz1 = st1.size(); int fst[sz1]; for(int i=0; i< sz1; i++)fst[i]=st1[i]; while(nscd.size()>1){ for(int i=1; i<nscd.size(); i++){ int ind = genrand()%(i+1); swap(nscd[i], nscd[ind]); } int sz = nscd.size()/2; int scd[sz]; for(int i=0; i< sz; i++)scd[i]=nscd[i]; if(query(sz1, sz, fst, scd)){ while(nscd.size()>sz)nscd.pop_back(); } else{ reverse(nscd.begin(), nscd.end()); for(int i=0; i<sz; i++)nscd.pop_back(); } } int scd[1] = {nscd[0]}; vector<int> nfst = st1; while(nfst.size()>1){ for(int i=1; i<nfst.size(); i++){ int ind = genrand()%(i+1); swap(nfst[i], nfst[ind]); } int sz=nfst.size()/2; int fst[sz]; for(int i=0; i< sz; i++)fst[i]=nfst[i]; if(query(sz, 1, fst, scd)){ while(nfst.size()>sz)nfst.pop_back(); } else{ reverse(nfst.begin(), nfst.end()); for(int i=0; i< sz; i++)nfst.pop_back(); } } setRoad(nfst[0], nscd[0]); merge(nfst[0], nscd[0]); } }

Compilation message (stderr)

icc.cpp: In function 'void run(int)':
icc.cpp:43:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |         for(int i=1; i< a.size(); i++){
      |                      ~^~~~~~~~~~
icc.cpp:50:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |             for(int k=0; k<a.size(); k++){
      |                          ~^~~~~~~~~
icc.cpp:71:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   71 |             for(int i=1; i<nscd.size(); i++){
      |                          ~^~~~~~~~~~~~
icc.cpp:79:34: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   79 |                 while(nscd.size()>sz)nscd.pop_back();
      |                       ~~~~~~~~~~~^~~
icc.cpp:89:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   89 |             for(int i=1; i<nfst.size(); i++){
      |                          ~^~~~~~~~~~~~
icc.cpp:97:34: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   97 |                 while(nfst.size()>sz)nfst.pop_back();
      |                       ~~~~~~~~~~~^~~
#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...