제출 #871532

#제출 시각아이디문제언어결과실행 시간메모리
871532Muhammad_AneeqICC (CEOI16_icc)C++17
7 / 100
218 ms1460 KiB
#include <vector> #include <set> #include "icc.h" using namespace std; vector<int>g; int const N=110; vector<int>chi[N]={};int par[N]={}; bool w=0; bool q(vector<int>a,vector<int>b) { int* c=new int[a.size()];int *d=new int[b.size()]; for (int i=0;i<a.size();i++) c[i]=a[i]; for (int i=0;i<b.size();i++) d[i]=b[i]; int z=query(a.size(),b.size(),c,d); return z; } bool check(int l,int r) { int mid=(l+r)/2; vector<int>a,b; for (int i=l;i<=mid;i++) { for (auto j:chi[g[i]]) a.push_back(j); } for (int i=mid+1;i<=r;i++) { for (auto j:chi[g[i]]) b.push_back(j); } return q(a,b); } int root(int x) { if (x==par[x]) return x; return (par[x]=root(par[x])); } void merge1(int x,int y) { x=root(x); y=root(y); for (auto i:chi[y]) chi[x].push_back(i); chi[y]={}; par[y]=x; } void cq(int l,int r) { int mid=(l+r)/2; set<int>a,b; for (int i=l;i<=mid;i++) { for (auto j:chi[g[i]]) a.insert(j); } for (int i=mid+1;i<=r;i++) { for (auto j:chi[g[i]]) b.insert(j); } int x=*(begin(a)); while (a.size()) { x=*begin(a); a.erase(x); if (q({begin(a),end(a)},{begin(b),end(b)})==0) break; } int y=*begin(b); while (b.size()) { y=*begin(b); b.erase(y); if (q({x},{begin(b),end(b)})==0) break; } setRoad(x,y); y=root(y); merge1(x,y); x=root(x); vector<int>temp; for (auto i:g) { if (i==y) continue; temp.push_back(i); } g=temp; } void DnC(int l,int r) { if (r-l+1==1) return; int mid=(l+r)/2; DnC(l,mid); DnC(mid+1,r); if (!w) { if (check(l,r)) { w=1; cq(l,r); } } } void run(int n) { for (int i=1;i<=n;i++) { par[i]=i; g.push_back(i); chi[i].push_back(i); } for (int i=0;i<n-1;i++) { w=0; DnC(0,g.size()-1); } }

컴파일 시 표준 에러 (stderr) 메시지

icc.cpp: In function 'bool q(std::vector<int>, std::vector<int>)':
icc.cpp:12:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   12 |   for (int i=0;i<a.size();i++)
      |                ~^~~~~~~~~
icc.cpp:14:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   14 |   for (int i=0;i<b.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...