Submission #368222

#TimeUsernameProblemLanguageResultExecution timeMemory
368222ivan_tudorICC (CEOI16_icc)C++14
100 / 100
227 ms724 KiB
#include"icc.h" #include<bits/stdc++.h> using namespace std; const int N = 105; int dad[N]; vector<int> memb[N]; int findd(int nod){ if(nod == dad[nod]) return nod; int d = findd(dad[nod]); dad[nod] = d; return dad[nod]; } void join(int x,int y){ x = findd(x); y = findd(y); if(x == y) return; if(memb[x].size() < memb[y].size()){ swap(x, y); swap(memb[x], memb[y]); } for(auto mm:memb[y]){ memb[x].push_back(mm); } dad[y] = x; } int used[N]; void buildgroups(vector<int> &gra, vector<int> &grb, vector<int> &dads, int bit){ for(int i =0; i<dads.size();i++){ if(i & ( 1<<bit)){ for(auto x:memb[dads[i]]) gra.push_back(x); } else{ for(auto x:memb[dads[i]]) grb.push_back(x); } } } int findx(vector<int> v, vector<int> second){ vector<int> nou; while(v.size() > 1){ int mid = (v.size() -1 )/2; nou.clear(); for(int i = 0; i<=mid;i++) nou.push_back(v[i]); if(query(nou.size(), second.size(), nou.data(), second.data())) v = nou; else v.erase(v.begin(), v.begin() + mid + 1); } assert(!v.empty()); return v[0]; } void run(int n){ for(int i=1;i<=n;i++) dad[i] = i, memb[i].push_back(i); for(int nre = 1; nre<n;nre++){ for(int i=1;i<=n;i++) used[i] = 0; vector<int> dads; for(int i = 1; i<=n;i++){ int tata = findd(i); if(used[tata] == true) continue; used[tata] = true; dads.push_back(tata); } int ds = dads.size(); vector<int> gra, grb; for(int bit = 0; (1<<bit) < ds; bit++){ gra.clear(); grb.clear(); buildgroups(gra, grb, dads, bit); if(query(gra.size(), grb.size(), gra.data(), grb.data()) == 1){ int x, y; x = findx(gra, grb); y = findx(grb, gra); setRoad(x, y); join(x, y); break; } } } }

Compilation message (stderr)

icc.cpp: In function 'void buildgroups(std::vector<int>&, std::vector<int>&, std::vector<int>&, int)':
icc.cpp:30:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |   for(int i =0; i<dads.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...