Submission #960121

#TimeUsernameProblemLanguageResultExecution timeMemory
960121kimBoat (APIO16_boat)C++17
9 / 100
7 ms7516 KiB
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
#define eb emplace_back

const ll md=1e9+7;

vector<int> comp;
int a[505],b[505];
ll dp[505][1005],qs[505][1005];

int main(){
    ios::sync_with_stdio(false); cin.tie(0);

    int n; cin>>n;
    for(int i=1;i<=n;++i){
        cin>>a[i]>>b[i];
        comp.eb(--a[i]), comp.eb(b[i]);
    }
    comp.eb(0);
    sort(comp.begin(),comp.end());
    comp.erase(unique(comp.begin(),comp.end()),comp.end());
    int m=comp.size();
    dp[0][0]=1;
    for(int i=0;i<m;++i) qs[0][i]=1;
    for(int i=1;i<=n;++i){
        a[i]=lower_bound(comp.begin(),comp.end(),a[i])-comp.begin();
        b[i]=lower_bound(comp.begin(),comp.end(),b[i])-comp.begin();
        qs[i][0]=1;
        for(int j=1;j<m;++j){
            if(a[i]<j&&j<=b[i]) dp[i][j]=((qs[i-1][j-1]*(comp[j]-comp[j-1]))%md+md)%md;
            qs[i][j]=((dp[i][j]+qs[i-1][j]+qs[i][j-1]-qs[i-1][j-1])%md+md)%md;
        }
    }
    cout<<(qs[n][m-1]+md-1)%md;

    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...