Submission #362523

#TimeUsernameProblemLanguageResultExecution timeMemory
362523flappybirdBoat (APIO16_boat)C++14
9 / 100
2072 ms524288 KiB
#include <bits/stdc++.h> using namespace std; #define MAX 510 #define all(v) v.begin(), v.end() #define ln '\n' #define MOD 1000000007 #define INF 210000000000 #define pb push_back #define abs(x) (((x)>0)?(x):(-(x))) #define len(x) ((x).second-(x).first) typedef long long ll; vector<ll> dp[MAX], sum[MAX]; ll A[MAX], B[MAX]; int main(void) { ios::sync_with_stdio(false); cin.tie(0); ll N; cin >> N; ll i, j, k; for (i = 1; i <= N; i++) cin >> A[i] >> B[i], dp[i].pb(0), sum[i].pb(0); for (i = A[1]; i <= B[1]; i++) { dp[1].pb(1); sum[1].pb(0); sum[1][i - A[1] + 1] = (sum[1][i - A[1]] + dp[1][i - A[1] + 1]) % MOD; } for (i = 2; i <= N; i++) { for (j = A[i]; j <= B[i]; j++) dp[i].pb(1), sum[i].pb(0); for (j = A[i]; j <= B[i]; j++) { for (k = 1; k <= i - 1; k++) { if (j - A[k] <= 0) continue; dp[i][j - A[i] + 1] += sum[k][min(j - A[k], (ll)(sum[k].size() - 1))]; dp[i][j - A[i] + 1] %= MOD; } } for (j = A[i]; j <= B[i]; j++) sum[i][j - A[i] + 1] = (sum[i][j - A[i]] + dp[i][j - A[i] + 1]) % MOD; } ll ans = 0; for (i = 1; i <= N; i++) ans += sum[i][sum[i].size() - 1]; ans %= MOD; while (ans < 0) ans += MOD; cout << ans << ln; 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...