Submission #439339

#TimeUsernameProblemLanguageResultExecution timeMemory
439339algorithm16Fountain Parks (IOI21_parks)C++17
15 / 100
300 ms45932 KiB
#include "parks.h" #include<iostream> #include<cmath> #include<algorithm> using namespace std; vector <int> v[200005],u2,v2,a2,b2; vector <pair<pair<int,int>,int> > v1; bool comp(pair<pair<int,int>,int> a,pair<pair<int,int>,int> b) { return a.first.second<b.first.second; } int bio[200005],cnt; void dfs(int x) { bio[x]=1; cnt+=1; for(int i=0;i<v[x].size();i++) { if(!bio[v[x][i]]) dfs(v[x][i]); } } int construct_roads(std::vector<int> x,std::vector<int> y) { int n=x.size(); if(n==1) { build({},{},{},{}); return 1; } for(int i=0;i<n;i++) { v1.push_back(make_pair(make_pair(x[i],y[i]),i)); } sort(v1.begin(),v1.end(),comp); for(int i=0;i<v1.size();i++) { for(int j=i+1;j<v1.size() && j-i<=3;j++) { int x1=v1[i].first.first,y1=v1[i].first.second,x2=v1[j].first.first,y2=v1[j].first.second,i2=v1[i].second,j2=v1[j].second; if((abs(x1-x2)==2 && y1==y2) || (abs(y1-y2)==2 && x1==x2)) { v[i2].push_back(j2); v[j2].push_back(i2); u2.push_back(i2); v2.push_back(j2); } } } dfs(0); //cout << cnt << "\n"; if(cnt<n) return 0; for(int i=0;i<u2.size();i++) { if(y[u2[i]]==y[v2[i]]) { a2.push_back(3); b2.push_back(y[v2[i]]-1); } else if(x[u2[i]]==4) { a2.push_back(5); b2.push_back(y[v2[i]]-1); } else { a2.push_back(1); b2.push_back(y[v2[i]]-1); } } /*for(int i=0;i<u2.size();i++) { cout << u2[i] << " " << v2[i] << "\n"; } cout << "\n"; for(int i=0;i<a2.size();i++) { cout << a2[i] << " " << b2[i] << "\n"; }*/ build(u2,v2,a2,b2); return 1; }

Compilation message (stderr)

parks.cpp: In function 'void dfs(int)':
parks.cpp:15:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   15 |  for(int i=0;i<v[x].size();i++) {
      |              ~^~~~~~~~~~~~
parks.cpp: In function 'int construct_roads(std::vector<int>, std::vector<int>)':
parks.cpp:29:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<std::pair<int, int>, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |  for(int i=0;i<v1.size();i++) {
      |              ~^~~~~~~~~~
parks.cpp:30:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<std::pair<int, int>, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |   for(int j=i+1;j<v1.size() && j-i<=3;j++) {
      |                 ~^~~~~~~~~~
parks.cpp:43:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |     for(int i=0;i<u2.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...