Submission #95326

#TimeUsernameProblemLanguageResultExecution timeMemory
95326tduong0806Boat (APIO16_boat)C++14
0 / 100
6 ms4344 KiB
#include <bits/stdc++.h> typedef long long ll; typedef unsigned long long ull; using namespace std; #define forinc(a,b,c) for(int a=b,_c=c;a<=_c;++a) #define fordec(a,b,c) for(int a=b,_c=c;a>=_c;--a) #define all(a) a.begin(),a.end() #define pb push_back const int N=1010,mod=1e9+7; int n,f[N][N],a[N],b[N],old[N],s[N][N],m; vector<int> e; int main() { ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); //freopen("BOAT.inp","r",stdin); //freopen("BOAT.out","w",stdout); cin>>n; forinc(i,1,n) { cin>>a[i]>>b[i]; e.pb(a[i]);e.pb(b[i]); } e.erase(unique(all(e)),e.end()); m=e.size(); forinc(i,0,m-1) { old[i+1]=e[i]; a[i]=lower_bound(all(e),a[i])-e.begin()+1; b[i]=lower_bound(all(e),b[i])-e.begin()+1; } old[m+1]=1e9; f[0][0]=1; forinc(j,0,m) s[0][j]=1; forinc(i,1,n) forinc(j,0,m) { f[i][j]=(f[i][j]+f[i-1][j])%mod; if(j>=a[i]&&j<=b[i]) { int c=min(old[b[i]],old[j+1]-1); f[i][j]=(f[i][j]+s[i-1][j-1]*(c-old[j]+1))%mod; } s[i][j]=s[i][j-1]+f[i][j]; } cout<<s[n][m]-1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...