답안 #745209

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
745209 2023-05-19T14:53:17 Z amirhoseinfar1385 Boat (APIO16_boat) C++17
27 / 100
386 ms 18404 KB
#include<bits/stdc++.h>
using namespace std;
int mod=1e9+7;

long long mypow(long long m,long long y){
	if(y==0){
		return 1;
	}
	long long p=mypow(m,(y>>1));
	p*=p;
	p%=mod;
	if(y&1){
		p*=m;
		p%=mod;
	}
	return p;
}

int ww(long long a){
	if(a>=mod){
		a-=mod;
	}
	return a;
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n;
	cin>>n;
	vector<long long>rev(n+6);
	for(int i=0;i<=n+5;i++){
		rev[i]=mypow(i,mod-2);
	}
	vector<pair<int,int>>all(n+1);
	vector<int>allind;
	for(int i=1;i<=n;i++){
		cin>>all[i].first>>all[i].second;
		allind.push_back(all[i].first);
		allind.push_back(all[i].second);
		allind.push_back(all[i].first+1);
		allind.push_back(all[i].first-1);
		allind.push_back(all[i].second+1);
		allind.push_back(all[i].second-1);
	}
	allind.push_back(0);
	sort(allind.begin(),allind.end());
	allind.resize(unique(allind.begin(),allind.end())-allind.begin());
	int sz=(int)allind.size()+5;
	vector<vector<long long>>dp(sz+10,vector<long long>(sz+10));
	vector<long long>ps(sz+10);
	dp[0][0]=1;
	for(int i=0;i<sz+10;i++){
		ps[i]=1;
	}
	for(int i=1;i<=n;i++){
		int l=lower_bound(allind.begin(),allind.end(),all[i].first)-allind.begin();
		int r=lower_bound(allind.begin(),allind.end(),all[i].second)-allind.begin();
		for(int j=l;j<=r;j++){
			long long cnt=allind[j]-allind[j-1];
			for(int h=n;h>=2;h--){
				dp[j][h]+=dp[j][h-1]*(cnt-(h-1))%mod*rev[h]%mod;
				dp[j][h]=ww(dp[j][h]);
			}
			dp[j][1]+=ps[j-1]*cnt%mod;
			dp[j][1]=ww(dp[j][1]);
		}
		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;
		}
	}
	long long res=ps[sz+8];
	res+=mod-1;
	res%=mod;
	cout<<res<<"\n";
}
# 결과 실행 시간 메모리 Grader output
1 Correct 362 ms 18388 KB Output is correct
2 Correct 380 ms 18396 KB Output is correct
3 Correct 346 ms 18388 KB Output is correct
4 Correct 386 ms 18396 KB Output is correct
5 Correct 367 ms 18392 KB Output is correct
6 Correct 360 ms 18388 KB Output is correct
7 Correct 355 ms 18392 KB Output is correct
8 Correct 349 ms 18388 KB Output is correct
9 Correct 377 ms 18388 KB Output is correct
10 Correct 379 ms 18396 KB Output is correct
11 Correct 373 ms 18388 KB Output is correct
12 Correct 378 ms 18404 KB Output is correct
13 Correct 338 ms 18388 KB Output is correct
14 Correct 373 ms 18388 KB Output is correct
15 Correct 361 ms 18388 KB Output is correct
16 Incorrect 46 ms 964 KB Output isn't correct
17 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 362 ms 18388 KB Output is correct
2 Correct 380 ms 18396 KB Output is correct
3 Correct 346 ms 18388 KB Output is correct
4 Correct 386 ms 18396 KB Output is correct
5 Correct 367 ms 18392 KB Output is correct
6 Correct 360 ms 18388 KB Output is correct
7 Correct 355 ms 18392 KB Output is correct
8 Correct 349 ms 18388 KB Output is correct
9 Correct 377 ms 18388 KB Output is correct
10 Correct 379 ms 18396 KB Output is correct
11 Correct 373 ms 18388 KB Output is correct
12 Correct 378 ms 18404 KB Output is correct
13 Correct 338 ms 18388 KB Output is correct
14 Correct 373 ms 18388 KB Output is correct
15 Correct 361 ms 18388 KB Output is correct
16 Incorrect 46 ms 964 KB Output isn't correct
17 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 28 ms 3276 KB Output is correct
2 Correct 23 ms 3284 KB Output is correct
3 Correct 27 ms 3156 KB Output is correct
4 Correct 26 ms 3284 KB Output is correct
5 Correct 30 ms 3264 KB Output is correct
6 Correct 36 ms 3156 KB Output is correct
7 Correct 40 ms 3284 KB Output is correct
8 Correct 37 ms 3288 KB Output is correct
9 Correct 36 ms 3284 KB Output is correct
10 Correct 38 ms 3288 KB Output is correct
11 Correct 27 ms 3284 KB Output is correct
12 Correct 24 ms 3296 KB Output is correct
13 Correct 25 ms 3284 KB Output is correct
14 Correct 26 ms 3284 KB Output is correct
15 Correct 29 ms 3156 KB Output is correct
16 Correct 12 ms 852 KB Output is correct
17 Correct 10 ms 852 KB Output is correct
18 Correct 11 ms 928 KB Output is correct
19 Correct 12 ms 852 KB Output is correct
20 Correct 12 ms 852 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 362 ms 18388 KB Output is correct
2 Correct 380 ms 18396 KB Output is correct
3 Correct 346 ms 18388 KB Output is correct
4 Correct 386 ms 18396 KB Output is correct
5 Correct 367 ms 18392 KB Output is correct
6 Correct 360 ms 18388 KB Output is correct
7 Correct 355 ms 18392 KB Output is correct
8 Correct 349 ms 18388 KB Output is correct
9 Correct 377 ms 18388 KB Output is correct
10 Correct 379 ms 18396 KB Output is correct
11 Correct 373 ms 18388 KB Output is correct
12 Correct 378 ms 18404 KB Output is correct
13 Correct 338 ms 18388 KB Output is correct
14 Correct 373 ms 18388 KB Output is correct
15 Correct 361 ms 18388 KB Output is correct
16 Incorrect 46 ms 964 KB Output isn't correct
17 Halted 0 ms 0 KB -