이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define N 502
using namespace std;
struct pt { int l,r; };
pt a[N],b[N];
long long f[101][1001][101],g[101][1001][101],ng[N],i,j,k,n,m,sl[N];
const int mod=round(1e9)+7;
void nenso()
{
set <int> s;
for(i=1;i<=n;i++) { s.insert(a[i].l); s.insert(a[i].r); }
int tr;
for(set <int>::iterator it=s.begin();it!=s.end();it++)
{
if(it==s.begin()) b[++m]={ (*it),(*it) };
else
{
b[++m]={ tr+1,(*it) };
sl[m]=b[m].r-b[m].l+1;
}
sl[m]=b[m].r-b[m].l+1;
tr=(*it);
}
}
long long lt(long long a,long long b)
{
if(b==0) return 1;
long long tg=lt(a,b/2);
if(b%2==0) return tg*tg%mod;
return tg*tg%mod*a%mod;
}
int main()
{
// freopen("boat.inp","r",stdin);
// freopen("boat.out","w",stdout);
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin>>n;
for(i=1;i<=n;i++) cin>>a[i].l>>a[i].r;
nenso();
for(i=n;i>=0;i--)
{
ng[i]=lt(i,mod-2);
// cerr<<ng[i]<<'\n';
}
for(j=0;j<=m;j++) g[0][j][0]=f[0][j][0]=1;
for(i=1;i<=n;i++)
for(j=0;j<=m;j++)
{
for(k=0;k<=min(i,sl[j]);k++)
{
if(k==0)
{
if(j>0)
{
f[i][j][k]=g[i][j-1][min(i,sl[j-1])];
// cerr<<j-1<<" "<<min(i,sl[j-1])<<" "<<g[i][j-1][min(i,sl[j-1])]<<'\n';
}
else f[i][j][k]=1;
g[i][j][k]=f[i][j][k];
}
else
{
f[i][j][k]=f[i-1][j][k];
if(a[i].l<=b[j].l && b[j].r<=a[i].r)
{
f[i][j][k]=(f[i][j][k]+f[i-1][j][k-1]*(sl[j]-k+1)%mod*ng[k])%mod;
// cerr<<i<<" "<<j<<" "<<k<<" "<<f[i-1][j][k-1]<<'\n';
}
g[i][j][k]=g[i][j][k-1]+f[i][j][k];
if(g[i][j][k]>=mod) g[i][j][k]-=mod;
}
// cerr<<i<<" "<<j<<" "<<k<<" "<<f[i][j][k]<<'\n';
}
}
cout<<(g[n][m][min(n,sl[m])]-1+mod)%mod;
}
컴파일 시 표준 에러 (stderr) 메시지
boat.cpp: In function 'void nenso()':
boat.cpp:18:24: warning: 'tr' may be used uninitialized in this function [-Wmaybe-uninitialized]
18 | b[++m]={ tr+1,(*it) };
| ~~^~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |