제출 #20433

#제출 시각아이디문제언어결과실행 시간메모리
20433I_forgot_password (#35)초음속철도 (OJUZ11_rail)C++98
45 / 100
3000 ms28676 KiB
#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]);
    }

}

컴파일 시 표준 에러 (stderr) 메시지

rail.cpp: In function 'int main()':
rail.cpp:26:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=1;i<cnt.size();i++){
                  ^
rail.cpp:21:9: warning: unused variable 'prv' [-Wunused-variable]
     int prv = -1;
         ^
rail.cpp:13:24: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&n,&m);
                        ^
rail.cpp:15:59: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d",&(train[i].first),&(train[i].second));
                                                           ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...