제출 #428172

#제출 시각아이디문제언어결과실행 시간메모리
428172MOUF_MAHMALATSplit the Attractions (IOI19_split)C++14
0 / 100
71 ms8704 KiB
#include "split.h" #include<bits/stdc++.h> using namespace std; typedef int ll; bool is[100009]; ll cnt[100009],x,y,z; vector<ll>ans; vector<vector<ll> >v; pair<ll,ll>id[3]; void dfs(ll d) { if(id[0].first) ans[d]=id[0].second,id[0].first--; else if(id[1].first) ans[d]=id[1].second,id[1].first--; else ans[d]=id[2].second,id[2].first--; is[d]=1; for(auto it:v[d]) if(is[it]==0) dfs(it); } void check(ll d) { if(ans[d]==1) x++; else if(ans[d]==2) y++; else z++; is[d]=1; for(auto it:v[d]) { if(is[it]==0&&ans[it]==ans[d]) check(it); } } vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) { v.resize(n); ans.resize(n); id[0]= {a,1}; id[1]= {b,2}; id[2]= {c,3}; sort(id,id+3); for(ll i=0; i<p.size(); i++) { cnt[p[i]]++,cnt[q[i]]++; v[p[i]].push_back(q[i]); v[q[i]].push_back(p[i]); } v.resize(n); for(ll i=0; i<n; i++) { if(cnt[i]>1) continue; dfs(i); memset(is,0,sizeof is); for(ll j=1; j<4; j++) for(ll i=0; i<n; i++) { if(ans[i]==j) { check(i); break; } } if(x!=a||y!=b||z!=c) for(ll i=0; i<n; i++) ans[i]=0; return ans; } dfs(0); for(ll j=1; j<4; j++) for(ll i=0; i<n; i++) { if(ans[i]==j) { check(i); break; } } if(x!=a||y!=b||z!=c) for(ll i=0; i<n; i++) ans[i]=0; return ans; }

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

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