# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
20433 | I_forgot_password (#35) | 초음속철도 (OJUZ11_rail) | C++98 | 3000 ms | 28676 KiB |
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>
#define je 1000000007
using namespace std;
pair<int,int> train[200001];
vector<int> cnt;
map<int,int> dict;
long long sum[524288];
long long dp[10001];
int can[10001];
int gae=0;
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++){
scanf("%d%d",&(train[i].first),&(train[i].second));
cnt.push_back(train[i].first);
cnt.push_back(train[i].second);
}
cnt.push_back(-1);
sort(cnt.begin(),cnt.end());
int prv = -1;
if(cnt[1] != 1 || cnt[(int)cnt.size() - 1] != n){
printf("0");
return 0;
}
for(int i=1;i<cnt.size();i++){
if(cnt[i-1] != cnt[i]){
dict[cnt[i]] = gae++;
}
}
sort(train,train+m);
can[0] = 1; dp[0] = 1;
for(int j=0;j<m;j++){
int from = dict[train[j].first];
int to = dict[train[j].second];
for(int i=from;i<to;i++){
if(can[i]){
can[to] = 1;
break;
}
}
long long sum = 0;
for(int i=from;i<to;i++){
sum = (sum + dp[i]) % je;
}
for(int i=to;i<gae;i++){
dp[i] = (dp[i] * 2) % je;
}
dp[to] = (dp[to] + sum) % je;
/*for(int i=0;i<gae;i++){
printf("(%d,%lld)\n",can[i],dp[i]);
}*/
}
if(!can[gae-1]){
printf("0");
}else{
printf("%lld",dp[gae-1]);
}
}
Compilation message (stderr)
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |