Submission #1080394

#TimeUsernameProblemLanguageResultExecution timeMemory
1080394raphaelpFire (BOI24_fire)C++14
0 / 100
1 ms600 KiB
#include <bits/stdc++.h> using namespace std; int main() { long long N, M; cin >> N >> M; vector<vector<long long>> Tab; vector<pair<long long, long long>> input; for (long long i = 0; i < N; i++) { long long l, r; cin >> l >> r; input.push_back({l, r}); if (r >= l) { Tab.push_back({l, r, i}); Tab.push_back({l + M, r + M, i}); } else { Tab.push_back({l, r + M, i}); } } sort(Tab.begin(), Tab.end()); long long last = -1; vector<long long> removed(Tab.size()); for (long long i = 0; i < Tab.size(); i++) { if (last != -1) { if (Tab[last][1] >= Tab[i][1]) removed[i] = 1; } if (removed[i] == 0) last = i; } vector<vector<long long>> Tab2; for (long long i = 0; i < Tab.size(); i++) if (!removed[i]) Tab2.push_back(Tab[i]); swap(Tab, Tab2); vector<vector<pair<long long, long long>>> next(log2(N) + 1, vector<pair<long long, long long>>(N)); for (long long i = Tab.size() - 1; i >= 0; i--) { long long x = lower_bound(Tab.begin(), Tab.end(), vector<long long>{Tab[i][1] + 1}) - Tab.begin() - 1; if (x != i) { next[0][Tab[i][2]].first = Tab[x][2]; next[0][Tab[i][2]].second = Tab[x][1] - Tab[i][1]; } } for (long long i = 1; i <= log2(N); i++) { for (long long j = 0; j < N; j++) { next[i][j].first = next[i - 1][next[i - 1][j].first].first; next[i][j].second = next[i - 1][j].second + next[i - 1][next[i - 1][j].first].second; } } long long best = 1000000000; for (long long i = 0; i < N; i++) { long long x = i, compte = 0, dist = 0; for (long long j = log2(N); j >= 0; j--) { if (dist + next[j][x].second < M) { dist += next[j][x].second; x = next[j][x].first; compte += (1 << j); } } if (dist + next[0][x].second >= M) best = min(best, compte + 1); } cout << ((best == 1000000000) ? -1 : best); }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:27:29: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::vector<long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |     for (long long i = 0; i < Tab.size(); i++)
      |                           ~~^~~~~~~~~~~~
Main.cpp:38:29: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::vector<long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |     for (long long i = 0; i < Tab.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...
#Verdict Execution timeMemoryGrader output
Fetching results...