Submission #1059430

#TimeUsernameProblemLanguageResultExecution timeMemory
1059430TrentFountain Parks (IOI21_parks)C++17
Compilation error
0 ms0 KiB
#include "parks.h" #include "bits/stdc++.h" using namespace std; #define forR(i, x) for(int i = 0; i < (x); ++i) #define REP(i, a, b) for(int i = (a); i < (b); ++i) typedef long long ll; typedef vector<int> vi; typedef vector<vi> vvi; typedef vector<bool> vb; typedef set<int> si; struct pii{int a, b;}; bool operator <(pii a, pii b) {return a.a < b.a || a.a == b.a && a.b < b.b;} const int MD = 2e5 + 10; int dir[4][2] = {{2, 0}, {0, -2}, {-2, 0}, {0, 2}}; vvi chk = {{-1, 1, 1, 1, 0, 2}, {1, 1, 1, -1, 2, 0}, {1, -1, -1, -1, 0, -2}, {-1, -1, -1, 1, -2, 0}}; bool conn(int n, vi& u, vi& v) { vvi adj(n); forR(i, u.size()) { adj[u[i]].push_back(v[i]); adj[v[i]].push_back(u[i]); } vb vis(n); vi dfs = {0}; while(!dfs.empty()) { int cur = dfs.back(); dfs.pop_back(); if(!vis[cur]) { vis[cur] = true; for(int i : adj[cur]) if(!vis[i]) { dfs.push_back(i); } } } forR(i, n) if(!vis[i]) return false; return true; } int construct_roads(std::vector<int> x, std::vector<int> y) { int n = x.size(); map<pii, int> ci; set<pii> bnch; forR(i, n) ci[{x[i], y[i]}] = i; vi u, v, a, b; for(auto [pos, id] : ci) { forR(i, 4) { int nx=pos.a+dir[i][0], ny=pos.b+dir[i][1]; if(ci.count({nx, ny})) { u.push_back(id); v.push_back(ci[{nx, ny}]); a.push_back(0); b.push_back(0); } } } if(!conn(n, u, v)) return 0; int m = u.size(); vb done(m); forR(i, m) if(!done[i]){ int xc=x[v[i]] - x[u[i]], yc=y[v[i]]-y[u[i]]; vector<pii> ch; if(xc == 0) { ch.push_back({x[u[i]] + 1, y[u[i]] + yc / 2}); ch.push_back({x[u[i]] - 1, y[u[i]] + yc/2}); } else { assert(yc == 0); ch.push_back({x[u[i]] + xc / 2, y[u[i]] + 1}); ch.push_back({x[u[i]] + xc / 2, y[u[i]] - 1}); } forR(j, 2) { si vis; vi dfs = {i}; a[i] = ch[j].a, b[i] = ch[j].b; vis.insert(i); while(!dfs.empty()) { int cur = dfs.back(); dfs.pop_back(); for(auto [ac1, bc1, ac2, bc2, nac, nbc] : chk) { } } } } }

Compilation message (stderr)

parks.cpp: In function 'bool operator<(pii, pii)':
parks.cpp:12:63: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   12 | bool operator <(pii a, pii b) {return a.a < b.a || a.a == b.a && a.b < b.b;}
      |                                                    ~~~~~~~~~~~^~~~~~~~~~~~
parks.cpp: In function 'bool conn(int, vi&, vi&)':
parks.cpp:4:37: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forR(i, x) for(int i = 0; i < (x); ++i)
      |                                     ^
parks.cpp:19:5: note: in expansion of macro 'forR'
   19 |     forR(i, u.size()) {
      |     ^~~~
parks.cpp: In function 'int construct_roads(std::vector<int>, std::vector<int>)':
parks.cpp:76:26: error: 6 names provided for structured binding
   76 |                 for(auto [ac1, bc1, ac2, bc2, nac, nbc] : chk) {
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
parks.cpp:76:26: note: while 'std::vector<int>' decomposes into 1 element
parks.cpp:75:21: warning: unused variable 'cur' [-Wunused-variable]
   75 |                 int cur = dfs.back(); dfs.pop_back();
      |                     ^~~
parks.cpp:39:19: warning: control reaches end of non-void function [-Wreturn-type]
   39 |     map<pii, int> ci;
      |                   ^~