Submission #106439

#TimeUsernameProblemLanguageResultExecution timeMemory
106439polyfishLand of the Rainbow Gold (APIO17_rainbow)C++14
0 / 100
3016 ms81824 KiB
#include "rainbow.h" #include <bits/stdc++.h> using namespace std; #define debug(x) cerr << #x << " = " << x << '\n'; #define BP() cerr << "OK!\n"; #define PR(A, n) {cerr << #A << " = "; for (int _=1; _<=n; ++_) cerr << A[_] << ' '; cerr << '\n';} #define PR0(A, n) {cerr << #A << " = "; for (int _=0; _<n; ++_) cerr << A[_] << ' '; cerr << '\n';} #define FILE_NAME "data" const int X[] = {-1, 0, 1, 0}; const int Y[] = {0, -1, 0, 1}; int m, n; vector<pair<int, int> > snake; void init(int R, int C, int sr, int sc, int M, char *S) { m = R; n = C; snake.resize(M+1); snake[0] = {sr, sc}; for (int i=1; i<=M; ++i) { snake[i] = snake[i-1]; if (S[i-1]=='N') --snake[i].first; else if (S[i-1]=='S') ++snake[i].first; else if (S[i-1]=='W') --snake[i].second; else ++snake[i].second; } sort(snake.begin(), snake.end()); snake.resize(unique(snake.begin(), snake.end()) - snake.begin()); } int colour(int x1, int y1, int x2, int y2) { set<pair<int, int> > v; set<pair<pair<int, int>, pair<int, int> > > e; ///find all vertices for (int i=y1-1; i<=y2+1; ++i) { v.insert({x1-1, i}); v.insert({x2+1, i}); } for (int i=x1-1; i<=x2+1; ++i) { v.insert({i, y1-1}); v.insert({i, y2+1}); } for (auto p : snake) { if (x1<=p.first && p.first<=x2 && y1<=p.second && p.second<=y2) v.insert(p); } // debug(v.size()); ///find all edges for (auto p : v) { for (int i=0; i<4; ++i) { pair<int, int> q(p.first+X[i], p.second+Y[i]); if (v.count(q)) e.insert({min(p, q), max(p, q)}); } } // debug(e.size()); int res = (int)e.size() - (int)v.size() + 1; for (auto p : v) { if (v.count({p.first+1, p.second}) && v.count({p.first, p.second+1}) && v.count({p.first+1, p.second+1})) --res; } return res; }
#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...