Submission #252016

#TimeUsernameProblemLanguageResultExecution timeMemory
252016DS007Boat (APIO16_boat)C++14
9 / 100
980 ms20180 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int N = 500, mod = 1e9 + 7; int a[N], b[N]; int dp[2][N * N * 3]; int n; int solveTestCase() { cin >> n; for (int i = 0; i < n; i++) cin >> a[i] >> b[i]; vector<int> v = {0}; for (int i = 0; i < n; i++) { for (int j = 0; j <= n; j++) v.push_back(a[i] + j), v.push_back(a[i] - j), v.push_back(b[i] + j), v.push_back(b[i] - j); } sort(v.begin(), v.end()); v.erase(unique(v.begin(), v.end()), v.end()); for (int i = 0; i < n; i++) { a[i] = lower_bound(v.begin(), v.end(), a[i]) - v.begin(); b[i] = lower_bound(v.begin(), v.end(), b[i]) - v.begin(); } dp[0][0] = 1; for (int i = a[0]; i <= b[0]; i++) dp[0][i] = 1; for (int i = 1; i < n; i++) { dp[i%2][0] = 1; int sum = 0; for (int j = 0; j < a[i]; j++) dp[i%2][j] = dp[(i - 1)%2][j], sum += dp[(i - 1)%2][j], sum %= mod; for (int j = b[i] + 1; j < N * N * 3; j++) dp[i%2][j] = dp[(i - 1)%2][j]; for (int j = a[i]; j <= b[i]; j++) sum += dp[(i - 1)%2][j], sum %= mod, dp[i%2][j] = sum; } int ans = 0; for (int i = 1; i < N * N * 3; i++) ans += dp[(n - 1)%2][i], ans %= mod; cout << ans; } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int t = 1; //cin >> t; while (t--) solveTestCase(); }

Compilation message (stderr)

boat.cpp: In function 'long long int solveTestCase()':
boat.cpp:50:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...