제출 #791762

#제출 시각아이디문제언어결과실행 시간메모리
791762ezzzaySplit the Attractions (IOI19_split)C++14
0 / 100
24 ms47228 KiB
#include "split.h" #include <cstdio> #include <cassert> #include<bits/stdc++.h> using namespace std; const int N=2e6+5; vector<int>v[N]; bool vis[N]; vector<int>ans; void dfs(int a){ vis[a]=1; ans.push_back(a); for(auto b:v[a]){ if(vis[b]==0)dfs(b); } } vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) { vector<pair<int,int>>f; f.push_back({a,0});f.push_back({b,1});f.push_back({c,2}); sort(f.begin(),f.end()); for(int i=0;i<p.size();i++){ v[p[i]].push_back(q[i]); v[q[i]].push_back(p[i]); } vector<int> res; dfs(0); vector<int>A,B,C; int idx=f[0].second; int h=f[0].first; for(int i=0;i<n;i++)vis[i]=0; if(idx==0){ for(int i=0;i<h;i++){ A.push_back(ans[ans.size()-1]); vis[ans[ans.size()-1]]=1; ans.pop_back(); } } else if(idx==1){ for(int i=0;i<h;i++){ B.push_back(ans[ans.size()-1]); vis[ans[ans.size()-1]]=1; ans.pop_back(); } } else { for(int i=0;i<h;i++){ C.push_back(ans[ans.size()-1]); vis[ans[ans.size()-1]]=1; ans.pop_back(); } } idx=f[1].second; h=f[1].first; if(idx==0){ for(int i=0;i<h;i++){ A.push_back(ans[ans.size()-1]); vis[ans[ans.size()-1]]=1; ans.pop_back(); } } else if(idx==1){ for(int i=0;i<h;i++){ B.push_back(ans[ans.size()-1]); vis[ans[ans.size()-1]]=1; ans.pop_back(); } } else { for(int i=0;i<h;i++){ C.push_back(ans[ans.size()-1]); vis[ans[ans.size()-1]]=1; ans.pop_back(); } } idx=f[2].second; if(idx==0){ for(int i=0;i<n;i++){ if(vis[i]==0)A.push_back(i); } } else if(idx==1){ for(int i=0;i<n;i++){ if(vis[i]==0)B.push_back(i); } } else { for(int i=0;i<n;i++){ if(vis[i]==0)C.push_back(i); } } for(int i=0;i<A.size();i++){ res.push_back(A[i]); } for(int i=0;i<B.size();i++){ res.push_back(B[i]); } for(int i=0;i<C.size();i++){ res.push_back(C[i]); } return res; }

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

split.cpp: In function 'std::vector<int> find_split(int, int, int, int, std::vector<int>, std::vector<int>)':
split.cpp:21:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |     for(int i=0;i<p.size();i++){
      |                 ~^~~~~~~~~
split.cpp:92:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   92 |     for(int i=0;i<A.size();i++){
      |                 ~^~~~~~~~~
split.cpp:96:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   96 |     for(int i=0;i<B.size();i++){
      |                 ~^~~~~~~~~
split.cpp:100:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  100 |     for(int i=0;i<C.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...