제출 #1345915

#제출 시각아이디문제언어결과실행 시간메모리
1345915novruzovJakarta Skyscrapers (APIO15_skyscraper)C++20
22 / 100
1095 ms460 KiB
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define all(x) x.begin(),x.end()
#define ff first
#define ss second
#define yes "Yes"
#define no "No"
#define pp pop_back
using namespace std;
const int INF=1e9+7;
const int maxN=3e4+3;
int b[maxN],p[maxN],dis[maxN];
int n,m;
void dfs(int pos,int cnt,int p,int s){
    while (pos >= 0 && pos < n) {
        dis[pos] = min(dis[pos],cnt);
        if (s == 1) pos += p;
        else pos -= p;
        cnt++;
    }
}
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin>>n>>m;
    for (int i=0;i<n;i++) dis[i]=INF;
    for (int i=0;i<m;i++){
        cin>>b[i]>>p[i];
    }
    dis[b[0]]=0;
    for (int k=0;k<m;k++){
      for (int i=0;i<m;i++){
          if (dis[b[i]]!=INF){
             dfs(b[i],dis[b[i]],p[i],1);
             dfs(b[i],dis[b[i]],p[i],2);
          }
        }
    }
   cout << (dis[b[1]] == INF ? -1 : dis[b[1]]);
    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...