Submission #362526

#TimeUsernameProblemLanguageResultExecution timeMemory
362526flappybirdBoat (APIO16_boat)C++14
9 / 100
2081 ms524292 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]; pair<ll, ll> s[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; } s[1] = { A[1], 1 }; ll it; for (i = 2; i <= N; i++) { for (j = A[i]; j <= B[i]; j++) { dp[i].pb(1), sum[i].pb(0); for (it = 1; it <= i - 1; it++) { k = s[it].second; if (j - A[k] <= 0) break; dp[i][j - A[i] + 1] += sum[k][min(j - A[k], (ll)(sum[k].size() - 1))]; dp[i][j - A[i] + 1] %= MOD; } sum[i][j - A[i] + 1] = (sum[i][j - A[i]] + dp[i][j - A[i] + 1]) % MOD; } for (j = 1; j < i; j++) { if (s[j].first > A[i]) break; } pair<ll, ll> tmp = { A[i], i }, t; k = j; for (j = k; j <= i - 1; j++) { t = s[j]; s[j] = tmp; tmp = t; } s[i] = tmp; } 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...