제출 #554025

#제출 시각아이디문제언어결과실행 시간메모리
554025ala2Boat (APIO16_boat)C++14
9 / 100
2080 ms363256 KiB
    #include <bits/stdc++.h>
    //#define int long long
    #define F first
    #define S second
    #define pb push_back
    #define B begin()
    #define E end()

    using namespace std;
    int n;
    int a[1000];
    int b[1000];
    map<pair<pair<int,int>,int>,int>dp;
    //map<pair<pair<int,int>,int>,int>go;
    const int mod=1e9+7;
    //dp[ { {i,last},pl } ]
    int T;
    long long  f(int i,int last,int pl)
    {


        if(dp[ { {i,last},pl } ]!=0)
            return dp[ { {i,last},pl } ]%mod;

        T++;

        if(i==n+1)
            return 1;
        long long g=f(i+1,last,pl);
        for(int j=a[i];j<=b[i];j++)
        if(j>a[last]+pl)
            g+=f(i+1,i,j-a[i]);
        //cout<<"        "<<i<<"   "<<last<<"   "<<pl<<endl;
        //go[ { {i,last},pl } ]=1;
        return dp[ { {i,last},pl } ]=g%mod;
    }
    signed main()
    {
        T=0;
      ios_base::sync_with_stdio(0);
      cin.tie(0);
      cout.tie(0);
        //memset(dp,-1,sizeof dp);
        cin>>n;
        for(int i=1;i<=n;i++){
            //a[i]=n-i;
            cin>>a[i]>>b[i];
        }
            cout<<f(1,0,0)-1<<endl;
        // cout<<T<<endl;
    }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...