Submission #867257

#TimeUsernameProblemLanguageResultExecution timeMemory
8672571075508020060209tcJakarta Skyscrapers (APIO15_skyscraper)C++14
57 / 100
25 ms35164 KiB
#pragma GCC optimize ("O3") #include<bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> using namespace __gnu_pbds; using namespace std; #define int short int n;int m; //int dis[30100]; vector<int>e[30100]; set<int>st[30100]; //map<pair<int,int>,int>vis; //map<pair<int,int>,int>dis; gp_hash_table<int, signed> dis[30010]; //gp_hash_table<int, bool> vis[30100]; bitset<30010>vis[30100]; int ar[30100]; //int frm[30100]; signed main(){ cin.tie(0); ios_base::sync_with_stdio(0); cin>>n>>m; for(int i=0;i<m;i++){int v; cin>>ar[i]>>v; st[ar[i]].insert(v); // e[ar[i]].push_back(br[i]); } for(int i=0;i<n;i++){ for(auto it=st[i].begin();it!=st[i].end();it++){ e[i].push_back(*it); } // e[i].push_back(0); } queue<pair<pair<int,int>,signed>>q; q.push({{ar[0],0},0}); vis[ar[0]][0]=1; while(q.size()){ int nw=q.front().first.first; int nwd=q.front().first.second; signed nwv=q.front().second; q.pop(); if(nw==ar[1]){ cout<<nwv<<endl;return 0; } for(int i=0;i<e[nw].size();i++){ int d=e[nw][i]; int v=nw+d; if(v<n){ if(!vis[v][d]){ vis[v][d]=1; q.push({{v,d},nwv+1}); } } v=nw-d; if(v>=0){ if(!vis[v][d]){ vis[v][d]=1; q.push({{v,d},nwv+1}); } } } e[nw].clear(); int v=nw-nwd; if(v>=0){ if(!vis[v][nwd]){ vis[v][nwd]=1; q.push({{v,nwd},nwv+1}); } } v=nw+nwd; if(v<n){ if(!vis[v][nwd]){ vis[v][nwd]=1; q.push({{v,nwd},nwv+1}); } } } cout<<-1; }

Compilation message (stderr)

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:46:14: warning: comparison of integer expressions of different signedness: 'short int' and 'std::vector<short int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   46 | for(int i=0;i<e[nw].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...