답안 #745206

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
745206 2023-05-19T14:48:56 Z amirhoseinfar1385 Boat (APIO16_boat) C++17
36 / 100
2000 ms 197152 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 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());
	vector<vector<long long>>dp(n*10+10,vector<long long>(n*10+10));
	vector<long long>ps(n*10+10);
	dp[0][0]=1;
	for(int i=0;i<n*10+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]%=mod;
			}
			dp[j][1]+=ps[j-1]*cnt%mod;
			dp[j][1]%=mod;
		}
		ps[0]=dp[0][0];
		for(int i=1;i<=n*10+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[n*10+8];
	res+=mod-1;
	res%=mod;
	cout<<res<<"\n";
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1343 ms 197092 KB Output is correct
2 Correct 1332 ms 197068 KB Output is correct
3 Correct 1326 ms 197064 KB Output is correct
4 Correct 1329 ms 197140 KB Output is correct
5 Correct 1357 ms 197140 KB Output is correct
6 Correct 1346 ms 197064 KB Output is correct
7 Correct 1325 ms 197152 KB Output is correct
8 Correct 1353 ms 197060 KB Output is correct
9 Correct 1368 ms 197140 KB Output is correct
10 Correct 1334 ms 197060 KB Output is correct
11 Correct 1370 ms 197112 KB Output is correct
12 Correct 1353 ms 197064 KB Output is correct
13 Correct 1337 ms 197068 KB Output is correct
14 Correct 1355 ms 197060 KB Output is correct
15 Correct 1342 ms 197068 KB Output is correct
16 Correct 1363 ms 197064 KB Output is correct
17 Correct 1334 ms 197064 KB Output is correct
18 Correct 1346 ms 197060 KB Output is correct
19 Correct 1381 ms 197064 KB Output is correct
20 Correct 1347 ms 197060 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1343 ms 197092 KB Output is correct
2 Correct 1332 ms 197068 KB Output is correct
3 Correct 1326 ms 197064 KB Output is correct
4 Correct 1329 ms 197140 KB Output is correct
5 Correct 1357 ms 197140 KB Output is correct
6 Correct 1346 ms 197064 KB Output is correct
7 Correct 1325 ms 197152 KB Output is correct
8 Correct 1353 ms 197060 KB Output is correct
9 Correct 1368 ms 197140 KB Output is correct
10 Correct 1334 ms 197060 KB Output is correct
11 Correct 1370 ms 197112 KB Output is correct
12 Correct 1353 ms 197064 KB Output is correct
13 Correct 1337 ms 197068 KB Output is correct
14 Correct 1355 ms 197060 KB Output is correct
15 Correct 1342 ms 197068 KB Output is correct
16 Correct 1363 ms 197064 KB Output is correct
17 Correct 1334 ms 197064 KB Output is correct
18 Correct 1346 ms 197060 KB Output is correct
19 Correct 1381 ms 197064 KB Output is correct
20 Correct 1347 ms 197060 KB Output is correct
21 Execution timed out 2073 ms 196992 KB Time limit exceeded
22 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 41 ms 8364 KB Output is correct
2 Correct 36 ms 8276 KB Output is correct
3 Correct 39 ms 8344 KB Output is correct
4 Correct 42 ms 8276 KB Output is correct
5 Correct 43 ms 8276 KB Output is correct
6 Correct 56 ms 8276 KB Output is correct
7 Correct 59 ms 8344 KB Output is correct
8 Correct 56 ms 8256 KB Output is correct
9 Correct 55 ms 8276 KB Output is correct
10 Correct 56 ms 8276 KB Output is correct
11 Correct 44 ms 8252 KB Output is correct
12 Correct 37 ms 8276 KB Output is correct
13 Correct 41 ms 8252 KB Output is correct
14 Correct 43 ms 8276 KB Output is correct
15 Correct 46 ms 8340 KB Output is correct
16 Correct 26 ms 8276 KB Output is correct
17 Correct 24 ms 8276 KB Output is correct
18 Correct 25 ms 8276 KB Output is correct
19 Correct 26 ms 8276 KB Output is correct
20 Correct 29 ms 8276 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1343 ms 197092 KB Output is correct
2 Correct 1332 ms 197068 KB Output is correct
3 Correct 1326 ms 197064 KB Output is correct
4 Correct 1329 ms 197140 KB Output is correct
5 Correct 1357 ms 197140 KB Output is correct
6 Correct 1346 ms 197064 KB Output is correct
7 Correct 1325 ms 197152 KB Output is correct
8 Correct 1353 ms 197060 KB Output is correct
9 Correct 1368 ms 197140 KB Output is correct
10 Correct 1334 ms 197060 KB Output is correct
11 Correct 1370 ms 197112 KB Output is correct
12 Correct 1353 ms 197064 KB Output is correct
13 Correct 1337 ms 197068 KB Output is correct
14 Correct 1355 ms 197060 KB Output is correct
15 Correct 1342 ms 197068 KB Output is correct
16 Correct 1363 ms 197064 KB Output is correct
17 Correct 1334 ms 197064 KB Output is correct
18 Correct 1346 ms 197060 KB Output is correct
19 Correct 1381 ms 197064 KB Output is correct
20 Correct 1347 ms 197060 KB Output is correct
21 Execution timed out 2073 ms 196992 KB Time limit exceeded
22 Halted 0 ms 0 KB -