Submission #230611

#TimeUsernameProblemLanguageResultExecution timeMemory
230611brcodeBoat (APIO16_boat)C++14
9 / 100
542 ms6648 KiB
#include <iostream> #include <bits/stdc++.h> using namespace std; const long long MOD = 1e9+7; const long long MAXN = 510; long long a[MAXN]; long long b[MAXN]; long long dp[MAXN][2*MAXN]; long long comb[2*MAXN][MAXN]; long long fac[4*MAXN]; vector<long long> pts; long long power(long long x, long long y, long long p) { long long res = 1; x = x % p; while (y > 0) { if (y & 1) res = (res*x) % p; y = y>>1; x = (x*x) % p; } return res; } long long modInverse(long long n, long long p) { return power(n, p-2, p); } long long nCrModPFermat(long long n, long long r) { long long p = MOD; if(comb[n][r]){ return comb[n][r]; } if (r<=0) return 1; if(r==1){ return n; } return comb[n][r] = (1LL*fac[n]* modInverse(fac[r], p) % p * 1LL*modInverse(fac[n-r], p) % p) % p; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); long long n; cin>>n; fac[0] = 1; for(long long i=1;i<=2000;i++){ fac[i] = (1LL*fac[i-1]*i)%MOD; } for(long long i=0;i<n;i++){ cin>>a[i]>>b[i]; a[i]--; pts.push_back(a[i]); pts.push_back(b[i]); } sort(pts.begin(),pts.end()); pts.resize(unique(pts.begin(),pts.end())-pts.begin()); for(long long i=0;i<pts.size();i++){ dp[0][i] = 1; } for(long long i=1;i<=n;i++){ dp[i][0] = 1; for(long long j=1;j<pts.size();j++){ dp[i][j] = dp[i][j-1]; long long cnt = 0; for(long long k=i;k>=1;k--){ if(a[k-1]<pts[j] && b[k-1]>=pts[j]){ cnt++; dp[i][j]+=(1LL*dp[k-1][j-1]*nCrModPFermat(pts[j]-pts[j-1]+cnt-1,cnt)); dp[i][j]%=MOD; // cout<<pts[j]-pts[j-1]<<" "<<cnt<<" "<<nCrModPFermat(pts[j]-pts[j-1],cnt)<<endl; } } // cout<<i<<" "<<j<<" "<<dp[i][j]<<endl; } } cout<<dp[n][pts.size()-1]-1<<'\n'; }

Compilation message (stderr)

boat.cpp: In function 'int main()':
boat.cpp:70:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(long long i=0;i<pts.size();i++){
                       ~^~~~~~~~~~~
boat.cpp:76:28: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(long long j=1;j<pts.size();j++){
                           ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...