Submission #45734

#TimeUsernameProblemLanguageResultExecution timeMemory
45734mirbek01Jakarta Skyscrapers (APIO15_skyscraper)C++17
36 / 100
116 ms48636 KiB
# include <bits/stdc++.h>

using namespace std;

const int N = 2002;

int n, m, b[N], p[N], d[N][N], dis[N];
vector < pair <int, int> > g[N];

int main(){
      cin >> n >> m;

      for(int i = 0; i < N; i ++){
            dis[i] = 1e9;
            for(int j = 0; j < N; j ++)
                  d[i][j] = 1e9;
      }

      for(int i = 1; i <= m; i ++){
            cin >> b[i] >> p[i];
            d[i][b[i]] = 0;
            for(int j = b[i]; j + p[i] < n; j += p[i])
                  d[i][j + p[i]] = d[i][j] + 1;
            for(int j = b[i]; j - p[i] >= 0; j -= p[i])
                  d[i][j - p[i]] = d[i][j] + 1;
      }

      for(int i = 1; i <= m; i ++){
            for(int j = 1; j <= m; j ++){
                  if(j == i) continue;
                  if(d[i][b[j]] != 1e9){
                        g[i].push_back({d[i][b[j]], j});
                  }
            }
      }

      set < pair <int, int> > st;
      dis[1] = 0;
      st.insert({-1e9, 1});

      while(!st.empty()){
            int v = st.begin()->second;
            st.erase(st.begin());
            for(int i = 0; i < g[v].size(); i ++){
                  int to = g[v][i].second, len = g[v][i].first;
                  if(dis[to] > dis[v] + len){
                        st.erase({dis[to], to});
                        dis[to] = dis[v] + len;
                        st.insert({dis[to], to});
                  }
            }
      }

      if(dis[2] == 1e9)
            cout << -1 << endl;
      else
            cout << dis[2] << endl;
}
/**
11 3
0 2
1 1
4 1
**/

Compilation message (stderr)

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:44:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             for(int i = 0; i < g[v].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...