Submission #241642

#TimeUsernameProblemLanguageResultExecution timeMemory
241642WhaleVomitBoat (APIO16_boat)C++14
9 / 100
13 ms8320 KiB
#include <bits/stdc++.h> using namespace std; #define f first #define s second #define pb push_back #define mp make_pair #define all(v) v.begin(), v.end() #define sz(v) (int)v.size() #define MOO(i, a, b) for(int i=a; i<b; i++) #define M00(i, a) for(int i=0; i<a; i++) #define MOOd(i,a,b) for(int i = (b)-1; i >= a; i--) #define M00d(i,a) for(int i = (a)-1; i>=0; i--) #define FAST ios::sync_with_stdio(0); cin.tie(0); #define finish(x) return cout << x << '\n', 0; #define dbg(x) cerr << ">>> " << #x << " = " << x << "\n"; #define _ << " _ " << typedef long long ll; typedef long double ld; typedef vector<int> vi; typedef pair<int,int> pi; typedef pair<ld,ld> pd; typedef complex<ld> cd; const ll MOD = 1000000007; const int MAX_N = 505; int n; pi arr[MAX_N]; ll dp[MAX_N][4*MAX_N]; bool cont(pi p1, pi p2) { return p2.f <= p1.f && p1.s <= p2.s; } int len(pi p) { return p.s - p.f + 1; } int main() { FAST cin >> n; M00(i, n) cin >> arr[i].f >> arr[i].s; vi idxs; idxs.pb(0); M00(i, n) { idxs.pb(arr[i].f); idxs.pb(arr[i].s); } sort(all(idxs)); idxs.erase(unique(all(idxs)), idxs.end()); vector<pi> intervals; intervals.pb(mp(0,0)); MOO(i, 1, sz(idxs)) { pi p = mp(idxs[i-1]+1, idxs[i]-1); if(p.f <= p.s) intervals.pb(p); intervals.pb(mp(idxs[i], idxs[i])); } sort(all(intervals)); dp[0][0] = 1; M00(i, sz(intervals)) { if(cont(intervals[i], arr[0])) dp[0][i] = len(intervals[i]); } MOO(i, 1, n) { M00(j, sz(intervals)) dp[i][j] = dp[i-1][j]; ll cursum = 0; M00(j, sz(intervals)) { if(cont(intervals[j], arr[i])) { dp[i][j] += (cursum * len(intervals[j])) % MOD; dp[i][j] %= MOD; } cursum += dp[i-1][j]; cursum %= MOD; } } ll res = MOD-1; M00(i, sz(intervals)) { res += dp[n-1][i]; res %= MOD; } finish(res); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...