This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
long long a[1000],b[1000];
long long dp[1000] = {0},dpe[200][200] = {0};
long long boat(int n){
dp[1] = 1;
a[n + 1] = 1000000000;
for(int i = 2;i <= n + 1;i++){
for(int j = i - 1;j >= 1;j--){
if(a[j] < a[i]) dp[i] += dp[j];
}
dp[i] += 1;
dp[i] %= 1000000007;
}
return dp[n + 1] - 1;
}
void notboat(int n){
for(int i = 2;i <= n;i++){
for(long long k = a[i];k <= b[i];k++){
for(int j = i - 1;j >= 1;j--){
for(long long pl = a[j];pl <= b[j];pl++){
if(pl < k) dpe[i][k] += dpe[j][pl];
}
}
dpe[i][k] %= 1000000007;
}
}
}
int main(){
int n;
cin >> n;
int flag = 0;
for(int i = 1;i <= n;i++){
cin >> a[i] >> b[i];
if(a[i] != b[i]) flag = 1;
}
if(flag == 0){
long long k = boat(n);
cout << k;
return 0;
}
long long ans = 0;
notboat(n);
memset(dpe,1,sizeof(dpe));
for(int i = 1;i <= n;i++){
for(long long k = a[i];k <= b[i];k++){
ans += dpe[i][k];
}
}
cout << ans;
}
# | 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... |