Submission #564536

#TimeUsernameProblemLanguageResultExecution timeMemory
564536RealSnakeBuilding Skyscrapers (CEOI19_skyscrapers)C++14
0 / 100
816 ms6148 KiB
#include "bits/stdc++.h" using namespace std; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; #define ll long long #define mod 1000000007 ofstream fout(".out"); ifstream fin(".in"); map<pair<int, int>, int> mp; map<pair<int, int>, bool> mp2; int n, t, j; int a[1500001]; bool vis[1500001]; int xi[8] = {0, 0, 1, -1, 1, 1, -1, -1}; int yi[8] = {-1, 1, 0, 0, -1, 1, -1, 1}; bool check(int x, int y) { return x >= 0 && x < n && y >= 0 && y < n; } bool check2(int x, int y) { mp2[{x, y}] = 1; bool b = 0; for(int i = 0; i < 4; i++) { int xx = x + xi[i]; int yy = y + yi[i]; if(!check(xx, yy)) b = 1; else if(!mp2[{xx, yy}] && mp[{xx, yy}] != n + 1) b |= check2(xx, yy); if(b) return 1; } return 0; } signed main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> t; vector<pair<int, int>> v; for(int i = 0; i < n; i++) { int x, y; cin >> x >> y; v.push_back({x, y}); mp[{x, y}] = i + 1; } vector<int> vec; vec.push_back(0); vis[0] = 1; int k = 0; j = 0; while(k < vec.size()) { int ind = vec[k++]; int x = v[ind].first, y = v[ind].second; mp2.clear(); if(!check2(x, y)) { if(k == vec.size()) break; vec.push_back(ind); continue; } mp[{x, y}] = n + 1; a[j++] = ind; for(int i = 0; i < 8; i++) { int xx = x + xi[i]; int yy = y + yi[i]; if(check(xx, yy) && mp[{xx, yy}] && mp[{xx, yy}] != n + 1 && !vis[mp[{xx, yy}] - 1]) { vis[mp[{xx, yy}] - 1] = 1; vec.push_back(mp[{xx, yy}] - 1); } } } if(j != n) { cout << "NO"; return 0; } cout << "YES\n"; for(int i = 0; i < n; i++) cout << a[i] + 1 << "\n"; return 0; }

Compilation message (stderr)

skyscrapers.cpp: In function 'int main()':
skyscrapers.cpp:62:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   62 |     while(k < vec.size()) {
      |           ~~^~~~~~~~~~~~
skyscrapers.cpp:67:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |             if(k == vec.size())
      |                ~~^~~~~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...