Submission #409327

#TimeUsernameProblemLanguageResultExecution timeMemory
409327victoriadJakarta Skyscrapers (APIO15_skyscraper)C++14
36 / 100
404 ms262148 KiB
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <utility>
#include <queue>
#include <map>
#include <iomanip>
using namespace std;
 
int d(int x,int y,vector<vector<pair<int,int> > >&s){
  int N=s.size();
  vector<int>dis(N,1e9);
  dis[x]=0;
  priority_queue<pair<int,int> >pq;
  pq.push(make_pair(0,x));
  while(!pq.empty()){
    int nodo=pq.top().second;
    int d=-pq.top().first;
    pq.pop();
    if(d>dis[nodo])
      continue;
    dis[nodo]=d;
    for(pair<int,int>v:s[nodo]){
      int vec=v.first;
      int dv=v.second;
      if(dis[vec]>dis[nodo]+dv){
        dis[vec]=dis[nodo]+dv;
        pq.push(make_pair(-dis[vec],vec));
      }
    }
 
  }
  if(dis[y]==1e9){
    return -1;
  }
  else{
    return dis[y];
  }
}
 
int main(){
   ios::sync_with_stdio(false);
  cin.tie(NULL);
  int N,M,B,P,x,y;
  cin>>N>>M;
  vector<vector<pair<int,int> > >s(N);
  vector<pair<int,int> >c(M);
  vector<bool>us(N,false);
  for(int i=0;i<M;i++){
  cin>>c[i].first>>c[i].second;
	us[c[i].first]=true;
  }
	for(int i=0;i<M;i++){
		B=c[i].first;
		P=c[i].second;
  		int j=B-P;
  		int o=1,u=1;
  		while(j>=0){
		if(us[j] && j!=c[0].first)
   		s[B].push_back(make_pair(j,o));
		if(j==c[1].first)break;
   		 j=j-P;
    	o++;
  		}
  		j=B+P;
  		 while(j<=N-1){
		if(us[j] && j!=c[0].first)
    	s[B].push_back(make_pair(j,u));
		if(j==c[1].first)break;
    	j=j+P;
    	u++;
  	}
	}
  
  cout<<d(c[0].first,c[1].first,s);
  return 0;
}
 

Compilation message (stderr)

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:46:15: warning: unused variable 'x' [-Wunused-variable]
   46 |   int N,M,B,P,x,y;
      |               ^
skyscraper.cpp:46:17: warning: unused variable 'y' [-Wunused-variable]
   46 |   int N,M,B,P,x,y;
      |                 ^
#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...