제출 #40715

#제출 시각아이디문제언어결과실행 시간메모리
40715IvanCJakarta Skyscrapers (APIO15_skyscraper)C++14
57 / 100
1070 ms213468 KiB
#include <bits/stdc++.h> #define MT make_tuple using namespace std; typedef tuple<int,int,int> trinca; const int MAXN = 30010; const int BUCKET = 175; vector<trinca> grafo[MAXN][BUCKET]; int processado[MAXN][BUCKET],N,M,origem,destino; int main(){ scanf("%d %d",&N,&M); for(int i = 0;i<M;i++){ int B,P; scanf("%d %d",&B,&P); if(i == 0) origem = B; else if(i == 1) destino = B; if(P < BUCKET){ grafo[B][0].push_back(MT(B,P,0)); } else{ for(int j = 1;B - j*P >= 0;j++){ grafo[B][0].push_back(MT(B - j*P,0,j)); } for(int j = 1;B + j*P < N;j++){ grafo[B][0].push_back(MT(B + j*P,0,j)); } } } priority_queue<trinca, vector<trinca>, greater<trinca> > Dijkstra; Dijkstra.push(MT(0,origem,0)); while(!Dijkstra.empty()){ trinca davez = Dijkstra.top(); Dijkstra.pop(); int dist = get<0>(davez), v = get<1>(davez), power = get<2>(davez); if(processado[v][power]) continue; processado[v][power] = 1; if(!processado[v][0]){ Dijkstra.push(MT(dist,v,0)); } if(power < BUCKET && v - power >= 0){ if(!processado[v - power][power]) Dijkstra.push(MT(dist+1,v - power,power)); } if(power < BUCKET && v + power < N){ if(!processado[v + power][power]) Dijkstra.push(MT(dist+1,v + power,power)); } if(v == destino){ printf("%d\n",dist); return 0; } for(trinca nova : grafo[v][power]){ int nv = get<0>(nova), npower = get<1>(nova), nadd = get<2>(nova); if(!processado[nv][npower]) Dijkstra.push(MT(dist+nadd,nv,npower)); } } printf("-1\n"); return 0; }

컴파일 시 표준 에러 (stderr) 메시지

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:10:22: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d",&N,&M);
                      ^
skyscraper.cpp:13:23: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d",&B,&P);
                       ^
#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...