Submission #1144021

#TimeUsernameProblemLanguageResultExecution timeMemory
1144021MongHwaICC (CEOI16_icc)C++20
18 / 100
191 ms628 KiB
#include "icc.h" #include <vector> #include <set> using namespace std; int parent[105]; set<int> comp[105]; int find(int x) { if(parent[x] < 0) return x; parent[x] = find(parent[x]); return parent[x]; } void comb(int a, int b) { a = find(a); b = find(b); if(a == b) return; if(comp[a].size() < comp[b].size()) swap(a, b); for(int x : comp[b]) comp[a].insert(x); parent[b] = a; comp[b].clear(); } void run(int n) { for(int i = 1; i <= n; i++) { parent[i] = -1; comp[i].insert(i); } for(int z = 0; z < n-1; z++) { for(int i = 1; i <= n; i++) { if(comp[i].empty()) continue; int asize = comp[i].size(); int arr[asize]; int pos = 0; for(int x : comp[i]) arr[pos++] = x; pos = 0; int bsize = n-asize; int brr[bsize]; for(int j = 1; j <= n; j++) if(!comp[i].count(j)) brr[pos++] = j; if(query(asize, bsize, arr, brr)) { int a, b; vector<int> v; for(int j = 0; j < asize; j++) v.push_back(arr[j]); while(1) { if(asize == 1) { a = v[0]; break; } int trr[asize/2]; for(int j = 0; j < asize/2; j++) trr[j] = v[j]; if(query(asize/2, bsize, trr, brr)) { v.erase(v.begin()+asize/2+1, v.end()); asize /= 2; if(asize == 1) { a = v[0]; break; } } else { v.erase(v.begin(), v.begin()+asize/2); asize = asize/2 + asize%2; if(asize == 1) { a = v[0]; break; } } } v.clear(); for(int j = 0; j < bsize; j++) v.push_back(brr[j]); int arr2[1] = {a}; while(1) { if(bsize == 1) { b = v[0]; break; } int trr[bsize/2]; for(int j = 0; j < bsize/2; j++) trr[j] = v[j]; if(query(1, bsize/2, arr2, trr)) { v.erase(v.begin()+bsize/2+1, v.end()); bsize /= 2; if(bsize == 1) { b = v[0]; break; } } else { v.erase(v.begin(), v.begin()+bsize/2); bsize = bsize/2 + bsize%2; if(bsize == 1) { b = v[0]; break; } } } setRoad(a, b); comb(a, b); break; } } } }
#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...