Submission #707321

#TimeUsernameProblemLanguageResultExecution timeMemory
707321StickfishJakarta Skyscrapers (APIO15_skyscraper)C++17
57 / 100
1087 ms2260 KiB
#include <iostream> #include <vector> #include <bitset> using namespace std; const int MAXN = 30100; const int INF = 1e9 + 177013; pair<int, int> dogs[MAXN]; vector<int> jlen[MAXN]; bitset<MAXN> used; int dist_long[MAXN]; signed main() { int n, m; cin >> n >> m; for (int i = 0; i < m; ++i) { cin >> dogs[i].first >> dogs[i].second; jlen[dogs[i].first].push_back(dogs[i].second); } int s = dogs[0].first; int t = dogs[1].first; for (int i = 0; i < n; ++i) dist_long[i] = INF; dist_long[s] = 0; while (used.count() < n) { int v = -1; for (int i = 0; i < n; ++i) { if (!used[i] && (v == -1 || dist_long[v] > dist_long[i])) v = i; } if (dist_long[v] >= INF) break; used[v] = 1; for (auto p : jlen[v]) { for (int k = 1; p * k <= v; ++k) dist_long[v - p * k] = min(dist_long[v - p * k], dist_long[v] + k); for (int k = 1; v + p * k < n; ++k) dist_long[v + p * k] = min(dist_long[v + p * k], dist_long[v] + k); } } if (dist_long[t] >= INF) cout << "-1\n"; else cout << dist_long[t] << '\n'; }

Compilation message (stderr)

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:26:25: warning: comparison of integer expressions of different signedness: 'std::size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   26 |     while (used.count() < n) {
      |            ~~~~~~~~~~~~~^~~
#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...