Submission #24664

#TimeUsernameProblemLanguageResultExecution timeMemory
24664jiangzhiICC (CEOI16_icc)C++11
0 / 100
159 ms2092 KiB
#include <cstdio> #include <vector> #include <algorithm> #include "icc.h" using namespace std; const int N = 110; int a[N]; int size_a; int b[N]; int size_b; int t1[N]; int size_t1; int t2[N]; int size_t2; int pai[N]; vector<int> aux[N]; int find(int a){ if(pai[a]==a)return a; return pai[a] = find(pai[a]); } void run(int n){ vector<int> total; for(int i = 1; i <= n; i++){ total.push_back(i); aux[i].push_back(i); pai[i]=i; } for(int cas = 1; cas <= n - 1; cas++){ while(1){ random_shuffle(total.begin(),total.end()); for(int i = 0; i < total.size(); i++){ //printf("%d ",total[i]); } printf("\n"); size_a = 0; size_b = 0; for(int i = 0; i < total.size(); i++){ if(i%2==0){ for(int j = 0; j < aux[total[i]].size(); j++){ a[size_a++]=aux[total[i]][j]; //printf("a %d %d %d\n",total[i],j,aux[total[i]][j]); } } else{ for(int j = 0; j < aux[total[i]].size(); j++){ b[size_b++]=aux[total[i]][j]; //printf("a %d %d %d\n",total[i],j,aux[total[i]][j]); } } } if(query(size_a,size_b,a,b))break; } while(size_a!=1){ size_t1 = 0; size_t2 = 0; for(int i = 0; i < size_a; i++){ if(i%2==0){ t1[size_t1++]=a[i]; } else{ t2[size_t2++]=a[i]; } } if(query(size_t1,size_b,t1,b)){ size_a = size_t1; for(int i = 0; i < size_t1; i++){ a[i]=t1[i]; } } else{ size_a = size_t2; for(int i = 0; i < size_t2; i++){ a[i]=t2[i]; } } } while(size_b!=1){ size_t1 = 0; size_t2 = 0; for(int i = 0; i < size_b; i++){ if(i%2==0){ t1[size_t1++]=b[i]; } else{ t2[size_t2++]=b[i]; } } if(query(size_a,size_t1,a,t1)){ size_b=size_t1; for(int i = 0; i < size_t1; i++){ b[i]=t1[i]; } } else{ size_b=size_t2; for(int i = 0; i < size_t2; i++){ b[i]=t2[i]; } } } setRoad(a[0],b[0]); //printf("linked %d %d\n",a[0],b[0]); if(cas==n-1)return; a[0]=find(a[0]); b[0]=find(b[0]); //printf("after find %d %d\n",a[0],b[0]); if(a[0]==b[0])continue; int val; if(aux[a[0]].size()>aux[b[0]].size()){ for(int i = 0; i < aux[b[0]].size(); i++){ aux[a[0]].push_back(aux[b[0]][i]); } aux[b[0]].clear(); val = b[0]; pai[b[0]]=a[0]; } else{ for(int i = 0; i < aux[a[0]].size(); i++){ aux[b[0]].push_back(aux[a[0]][i]); } aux[a[0]].clear(); val = a[0]; pai[a[0]]=b[0]; } //printf("val %d\n",val); vector<int>total2; for(int i = 0; i < total.size(); i++){ if(total[i]!=val)total2.push_back(total[i]); } total.clear(); for(int i = 0; i < total2.size(); i++){ total.push_back(total2[i]); } } return; //exit; }

Compilation message (stderr)

icc.cpp: In function 'void run(int)':
icc.cpp:39:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(int i = 0; i < total.size(); i++){
                     ^
icc.cpp:45:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(int i = 0; i < total.size(); i++){
                     ^
icc.cpp:47:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
      for(int j = 0; j < aux[total[i]].size(); j++){
                       ^
icc.cpp:53:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
      for(int j = 0; j < aux[total[i]].size(); j++){
                       ^
icc.cpp:120:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(int i = 0; i < aux[b[0]].size(); i++){
                     ^
icc.cpp:128:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(int i = 0; i < aux[a[0]].size(); i++){
                     ^
icc.cpp:137:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i = 0; i < total.size(); i++){
                    ^
icc.cpp:141:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i = 0; i < total2.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...