제출 #113428

#제출 시각아이디문제언어결과실행 시간메모리
113428ansol4328Boat (APIO16_boat)C++11
9 / 100
448 ms8420 KiB
#include<stdio.h> #include<algorithm> #include<map> using namespace std; typedef long long ll; ll n, m[505][2]; ll v[1005], inv[505]; ll dp1[505][1005], dp2[505][1005]; map<ll,ll> cont; const ll MOD=1e9+7; ll get_mod(ll x, ll y) { if(y==1) return x; ll ret=get_mod(x,y/2); (ret*=ret)%=MOD; if(y%2==1) (ret*=x)%=MOD; return ret; } int main() { scanf("%lld",&n); inv[n]=1; for(ll i=1 ; i<=n ; i++) { scanf("%lld %lld",&m[i][0],&m[i][1]); cont[m[i][0]]=0; cont[m[i][1]]=0; (inv[n]*=i)%=MOD; } //contracting ll cnt=0, contn; for(auto it=cont.begin() ; it!=cont.end() ; it++) { it->second=++cnt; v[cnt]=it->first; } contn=cnt; for(ll i=1 ; i<=n ; i++) { m[i][0]=cont[m[i][0]]; m[i][1]=cont[m[i][1]]; } //making modular inverse inv[n]=get_mod(inv[n],MOD-2); for(ll i=n ; i>1 ; i--) inv[i-1]=(inv[i]*i)%MOD; //DP ll res=0; for(ll i=0 ; i<=contn ; i++) dp1[0][i]=1; for(ll i=1 ; i<=n ; i++) { for(ll j=m[i][0] ; j<m[i][1] ; j++) { ll gap=v[j+1]-v[j]; ll k1=gap-1, fac1=gap, c=1; for(ll k=i-1 ; k>=0 ; k--) (dp1[i][j]+=(dp1[k][j-1]*gap))%=MOD; for(ll k=i-1 ; k>=1 ; k--) { if(k1<=0) break; if(m[k][0]<=j && j+1<=m[k][1]) { c++; (fac1*=k1)%=MOD; ll val=(dp1[k-1][j-1]*fac1)%MOD; (val*=inv[c])%=MOD; (dp1[i][j]+=val)%=MOD; k1--; } } } for(ll j=i-1 ; j>=0 ; j--) (dp2[i][m[i][1]]+=dp1[j][m[i][1]-1])%=MOD; for(ll j=1 ; j<=contn ; j++) { (dp1[i][j]+=dp1[i][j-1]+dp2[i][j])%=MOD; (dp2[i][j]+=dp2[i][j-1])%=MOD; } (res+=dp1[i][contn])%=MOD; } printf("%lld",res); return 0; }

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

boat.cpp: In function 'int main()':
boat.cpp:25:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%lld",&n);
     ~~~~~^~~~~~~~~~~
boat.cpp:29:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%lld %lld",&m[i][0],&m[i][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...