제출 #197918

#제출 시각아이디문제언어결과실행 시간메모리
197918nafis_shifat늑대인간 (IOI18_werewolf)C++14
0 / 100
386 ms26312 KiB
#include<bits/stdc++.h> #include "werewolf.h" #define pii pair<int,int> #define f first #define s second using namespace std; const int mxn=2e5+5; struct edge { int u,v; edge(int _,int __):u(_),v(__){}; }; vector<edge> g; bool cmp1(edge a,edge b) { return max(a.u,a.v)<max(b.u,b.v); } bool cmp2(edge a,edge b) { return min(a.u,a.v)>min(b.u,b.v); } bool cmp3(pii a,pii b) { return a>b; } int parent[mxn]; int findRep(int u) { if(parent[u]==u)return u; return parent[u]=findRep(parent[u]); } void _union(int u,int v) { u=findRep(u); v=findRep(v); parent[min(u,v)]=max(u,v); } vector<int> check_validity(int N, vector<int> X, vector<int> Y,vector<int> S, vector<int> E,vector<int> L, vector<int> R) { for(int i=0;i<=N;i++)parent[i]=i; pair<bool,bool> res[mxn]; for(int i=0;i<X.size();i++) { g.push_back(edge(X[i],Y[i])); } vector<pii> tr; vector<pii> tl; for(int i=0;i<R.size();i++) { tr.push_back({R[i],i}); tl.push_back({L[i],i}); } sort(g.begin(),g.end(),cmp1); sort(tr.begin(),tr.end()); int k=0; for(int i=0;i<tr.size();i++) { while(k<g.size() && max(g[k].u,g[k].v)<=tr[i].f) { _union(g[k].u,g[k].v); k++; } int q=tr[i].s; int p=findRep(E[q]); if(p>=L[q] && p<=R[q]) { res[q]={true,false}; } else { res[q]={false,false}; } E[q]=p; } for(int i=0;i<=N;i++)parent[i]=i; sort(g.begin(),g.end(),cmp2); sort(tl.begin(),tl.end(),cmp3); k=0; for(int i=0;i<tr.size();i++) { while(k<g.size() && tl[i].f<=min(g[k].u,g[k].v)) { _union(g[k].u,g[k].v); k++; } int q=tl[i].s; if(findRep(S[q])==findRep(E[q])) { res[q].s=true; } } vector<int> rs; for(int i=0;i<S.size();i++) { if(res[i].f && res[i].s)rs.push_back(1); else rs.push_back(0); } return rs; }

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

werewolf.cpp: In function 'std::vector<int> check_validity(int, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
werewolf.cpp:52:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0;i<X.size();i++)
               ~^~~~~~~~~
werewolf.cpp:60:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0;i<R.size();i++)
               ~^~~~~~~~~
werewolf.cpp:71:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=0;i<tr.size();i++)
               ~^~~~~~~~~~
werewolf.cpp:73:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(k<g.size() && max(g[k].u,g[k].v)<=tr[i].f)
           ~^~~~~~~~~
werewolf.cpp:106:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<tr.size();i++)
                 ~^~~~~~~~~~
werewolf.cpp:108:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       while(k<g.size() && tl[i].f<=min(g[k].u,g[k].v))
             ~^~~~~~~~~
werewolf.cpp:125:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<S.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...