Submission #205588

#TimeUsernameProblemLanguageResultExecution timeMemory
205588kshitij_sodaniJakarta Skyscrapers (APIO15_skyscraper)C++17
22 / 100
1107 ms235556 KiB
#include <iostream> #include <bits/stdc++.h> using namespace std; //typedef int64_t int; //#define mp make_pairr #define pb push_back /*#define a first #define b second*/ #define endl "\n" int dis[2001][2001]; int b[2001]; int p[2001]; struct pairr{ int a; int b; }; vector<pairr> adj[2001][2001]; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n,m; cin>>n>>m; //map<pairr<int,int>,int> aa; for(int i=0;i<m;i++){ cin>>b[i]>>p[i]; for(int j=b[i]-p[i];j>=0;j=j-p[i]){ pairr ac; ac.a=j; ac.b=i; adj[j+p[i]][i].pb(ac); ac.b=m; adj[j+p[i]][i].pb(ac); } for(int j=b[i]+p[i];j<n;j=j+p[i]){ pairr ac; ac.a=j; ac.b=i; adj[j-p[i]][i].pb(ac); ac.b=m; adj[j-p[i]][i].pb(ac); } pairr ac; ac.a=b[i]; ac.b=i; adj[b[i]][m].pb(ac); } memset(dis,-1,sizeof(dis)); dis[b[0]][m]=0; dis[b[0]][0]=0; deque<pairr> aaa; pairr ac; ac.a=b[0]; ac.b=0; aaa.push_back(ac); ac.b=m; aaa.push_back(ac); while(!aaa.empty()){ pairr x; x=aaa.front(); aaa.pop_front(); int co=1; if(x.b==m){ co=0; } for(auto nn:adj[x.a][x.b]){ if(dis[nn.a][nn.b]==-1){ dis[nn.a][nn.b]=dis[x.a][x.b]+co; if(co==0){ aaa.push_front(nn); } else{ aaa.push_back(nn); } } } } if(b[0]==b[1]){ cout<<0<<endl; return 0; } cout<<dis[b[1]][m]<<endl; return 0; }
#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...