Submission #951233

#TimeUsernameProblemLanguageResultExecution timeMemory
951233Trisanu_DasFountain Parks (IOI21_parks)C++17
45 / 100
503 ms59340 KiB
#include "parks.h" #include <bits/stdc++.h> using namespace std; const int MAXN=2e5+6; vector<int>g[MAXN]; map<pair<int,int>,int> tochki; bool vis[MAXN]; vector<pair<int,int> >roads; int cnt; void dfs(int u) { vis[u]=1; cnt++; for(auto xd:g[u]) { if(vis[xd])continue; dfs(xd); roads.push_back({u,xd}); } } int construct_roads(vector<int> x, vector<int> y) { if (x.size() == 1) { build({}, {}, {}, {}); return 1; } for(int i=0;i<x.size();i++) { tochki[make_pair(x[i],y[i])]=i; } for(int i=0;i<x.size();i++) { if(tochki.count(make_pair(x[i],y[i]-2))) { g[i].push_back(tochki[make_pair(x[i],y[i]-2)]); } if(tochki.count(make_pair(x[i],y[i]+2))) { g[i].push_back(tochki[make_pair(x[i],y[i]+2)]); } if(tochki.count(make_pair(x[i]+2,y[i]))) { g[i].push_back(tochki[make_pair(x[i]+2,y[i])]); } if(tochki.count(make_pair(x[i]-2,y[i]))) { g[i].push_back(tochki[make_pair(x[i]-2,y[i])]); } } dfs(0); if(cnt!=x.size())return 0; vector<int>u; vector<int>v; vector<int>a; vector<int>b; for(int i=0;i<roads.size();i++) { u.push_back(roads[i].first); v.push_back(roads[i].second); if(x[roads[i].first]==x[roads[i].second]) { int x1=x[roads[i].first]; int y1=min(y[roads[i].first],y[roads[i].second]); if((x1+y1)%4==0) { a.push_back(x1+1); b.push_back(y1+1); } else { a.push_back(x1-1); b.push_back(y1+1); } } else { int y1=y[roads[i].first]; int x1=min(x[roads[i].first],x[roads[i].second]); if((x1+y1)%4==0) { a.push_back(x1+1); b.push_back(y1-1); } else { a.push_back(x1+1); b.push_back(y1+1); } } } build(u,v,a,b); return 1; }

Compilation message (stderr)

parks.cpp: In function 'int construct_roads(std::vector<int>, std::vector<int>)':
parks.cpp:26:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |     for(int i=0;i<x.size();i++)
      |                 ~^~~~~~~~~
parks.cpp:30:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |  for(int i=0;i<x.size();i++)
      |              ~^~~~~~~~~
parks.cpp:50:8: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |  if(cnt!=x.size())return 0;
      |     ~~~^~~~~~~~~~
parks.cpp:55:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   55 |  for(int i=0;i<roads.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...