제출 #764509

#제출 시각아이디문제언어결과실행 시간메모리
764509Ahmed57Boat (APIO16_boat)C++17
100 / 100
1453 ms8308 KiB
#include <bits/stdc++.h> using namespace std; long long mod = 1000000007; long long fast(long long a,long long b){ if(b==0)return 1; if(b==1)return a; long long h = fast(a,b/2);h*=h;h%=mod; if(b%2==0)return h; else return (h*a)%mod; } signed main(){ ios_base::sync_with_stdio(false);cin.tie(0); int n; cin>>n; long long rev[n+1]; for(int i = 0;i<=n;i++){ rev[i] = fast(i,mod-2); } vector<pair<long long,long long>> v; vector<long long> ans; for(int i = 0;i<n;i++){ long long x,y; cin>>x>>y; v.push_back({x,y}); ans.push_back(x-1); ans.push_back(y); } ans.push_back(0); sort(ans.begin(),ans.end()); ans.resize(unique(ans.begin(),ans.end())-ans.begin()); long long fin = 0; long long dp[2001][501]; memset(dp,0,sizeof dp); long long ps[2001]; dp[0][0] = 1; long long sz = ans.size()+1; for(int i = 0;i<=sz+8;i++){ ps[i] = 1; } for(int i=1;i<=n;i++){ int l=lower_bound(ans.begin(),ans.end(),v[i-1].first)-ans.begin(); int r=lower_bound(ans.begin(),ans.end(),v[i-1].second)-ans.begin(); for(int j=l;j<=r;j++){ long long cnt=ans[j]-ans[j-1]; for(long long h=n;h>=2;h--){ dp[j][h]=(dp[j][h]+dp[j][h-1]*(cnt-(h-1))%mod*rev[h])%mod; } dp[j][1]=(dp[j][1]+ps[j-1]*cnt)%mod; } ps[0]=dp[0][0]; for(int i=1;i<=sz+9;i++){ ps[i]=ps[i-1]; for(int h=0;h<=n;h++){ ps[i]+=dp[i][h]; } ps[i]%=mod; } } cout<<(ps[sz+8]+(mod-1))%mod<<endl; } /* 1 4 3 4 {1,3},{1,4},{2,3},{2,4},{3,4} */

컴파일 시 표준 에러 (stderr) 메시지

boat.cpp: In function 'int main()':
boat.cpp:31:15: warning: unused variable 'fin' [-Wunused-variable]
   31 |     long long fin = 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...