Submission #151752

#TimeUsernameProblemLanguageResultExecution timeMemory
151752SorahISABoat (APIO16_boat)C++14
31 / 100
736 ms8216 KiB
#include <bits/stdc++.h> using namespace std; const long long mod = 1E9 + 7; int main() { int n; cin >> n; vector<vector<long long>> pre_dp; long long boat[n][2]; for (int i = 0; i < n; ++i) { cin >> boat[i][0] >> boat[i][1]; pre_dp.push_back(vector<long long>(boat[i][1] - boat[i][0] + 1, 1)); } long long answer = 0; for (int i = 0; i < n; ++i) { int sz = pre_dp[i].size(); for (int j = 0; j < sz; ++j) { for (int k = 0; k < i; ++k) { if (boat[i][0] + j > boat[k][1]) { pre_dp[i][j] += pre_dp[k][boat[k][1] - boat[k][0]]; } else if (boat[i][0] + j <= boat[k][0]) { // do nothing } else { pre_dp[i][j] += pre_dp[k][boat[i][0] + j - boat[k][0] - 1]; } } answer += pre_dp[i][j]; if (j) pre_dp[i][j] += pre_dp[i][j - 1]; pre_dp[i][j] %= mod; } answer %= mod; } answer %= mod; cout << answer << '\n'; return 0; } /* int main() { int n; cin >> n; long long boat[n][2]; for (int i = 0; i < n; ++i) { cin >> boat[i][0] >> boat[i][1]; } long long dp[n], answer = 0; for (int i = 0; i < n; ++i) { dp[i] = 1; for (int j = 0; j < i; ++j) { if (boat[j][0] < boat[i][0]) { dp[i] += dp[j]; } } dp[i] %= mod; answer += dp[i]; } answer %= mod; cout << answer << '\n'; 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...