Submission #734529

#TimeUsernameProblemLanguageResultExecution timeMemory
734529vjudge1Boat (APIO16_boat)C++14
100 / 100
590 ms2472 KiB
#include<stdio.h>
#include<algorithm>
#define N 509
#define M 1009
#define mod 1000000007
using namespace std;
inline char nc()
{
	static char buf[99999],*l,*r;
	return l==r&&(r=(l=buf)+fread(buf,1,99999,stdin),l==r)?EOF:*l++;
}
inline void read(int&x)
{
	char c=nc();for(;c<'0'||'9'<c;c=nc());
	for(x=0;'0'<=c&&c<='9';x=(x<<3)+(x<<1)+(c^48),c=nc());
}
int n,m,a[N],b[N],lsh[M],f[N][M],inv[N],ans;
inline long long ksm(long long a,int b)
{
	long long ans=1;
	for(;b;b>>=1,a*=a,a%=mod)if(b&1)ans*=a,ans%=mod;
	return ans;
}
main()
{
	read(n);
	for(int i=1;i<=n;inv[i]=ksm(i,mod-2),++i)
		read(a[i]),read(b[i]),lsh[m++]=a[i],lsh[m++]=b[i]+1;
	lsh[m++]=0;lsh[m++]=1000000001;
	sort(lsh,lsh+m);m=unique(lsh,lsh+m)-lsh;--m;
	for(int i=0;i<m;f[0][i++]=1);
	for(int i=1;i<=n;++i)
	{
		for(int l=lower_bound(lsh,lsh+m,a[i])-lsh,r=upper_bound(lsh,lsh+m,b[i])-lsh
			;l<r;++l)
		{
			for(int j=i-1,k=lsh[l+1]-lsh[l],cnt=1;j>=0;--j)
			{
				f[i][l]=(f[i][l]+(long long)(k)*f[j][l-1])%mod;
				if(a[j]<=lsh[l]&&lsh[l]<=b[j])++cnt,
					k=k*(long long)(lsh[l+1]-lsh[l]+cnt-1)%mod*inv[cnt]%mod;
			}
		}
		for(int j=1;j<m;++j)f[i][j]+=f[i][j-1]-mod,f[i][j]>>31&&(f[i][j]+=mod);
		ans+=f[i][m-1]-mod,ans>>31&&(ans+=mod);
	}
	printf("%d",ans);
}

Compilation message (stderr)

boat.cpp:24:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   24 | main()
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...