Submission #610705

#TimeUsernameProblemLanguageResultExecution timeMemory
610705nohaxjustsofloJakarta Skyscrapers (APIO15_skyscraper)C++17
22 / 100
4 ms1364 KiB
#include <bits/stdc++.h> #include <iostream> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; typedef tree<ll,null_type,less_equal<ll>,rb_tree_tag,tree_order_statistics_node_update> order_set; mt19937 mt_rand(chrono::high_resolution_clock::now().time_since_epoch().count()); //uniform_int_distribution<int> gen; ///(min, max) //int random() {return gen(mt_rand);} const int mxN=30001; const int mod=998244353; const int mxlogN=40; const int mxK=26; const int inf=1e9; const int K=600; vector<int> who[mxN]; int n, m, a[mxN], b[mxN]; int id(int x, int p) { return p*n+x; } pair<int,int> rev(int i) { return {i%n,i/n}; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> m; for(int i=0; i<m; i++) cin >> a[i] >> b[i]; for(int i=1; i<m; i++) who[a[i]].push_back(i); vector<int> q, q2; set<int> vis; q.push_back(id(a[0],b[0])); vis.insert(id(a[0],b[0])); int d=0; while(q.size()) { for(int pos:q) { auto par=rev(pos); int x=par.first, p=par.second; while(who[x].size()) { int j=who[x].back(); who[x].pop_back(); if(j==1) { cout << d << "\n"; return 0; } int id2=id(a[j],b[j]); if(vis.count(id2)) continue; q.push_back(id2); vis.insert(id2); } } for(int pos:q) { auto par=rev(pos); int x=par.first, p=par.second; int id2; if(x-p>=0) { id2=id(x-p,p); if(!vis.count(id2)) { vis.insert(id2); q2.push_back(id2); } } if(x+p<n) { id2=id(x+p,p); if(!vis.count(id2)) { vis.insert(id2); q2.push_back(id2); } } } q=q2; q2.clear(); d++; } cout << "-1" << "\n"; return 0; }

Compilation message (stderr)

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:48:30: warning: unused variable 'p' [-Wunused-variable]
   48 |             int x=par.first, p=par.second;
      |                              ^
#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...