제출 #1136958

#제출 시각아이디문제언어결과실행 시간메모리
1136958owoovoRoller Coaster Railroad (IOI16_railroad)C++20
0 / 100
116 ms27256 KiB
#include "railroad.h"
#include<bits/stdc++.h>
#define ll long long
#define F first 
#define S second 
using namespace std;
const ll maxn=1e18;
pair<ll,ll> tri[800010];
pair<ll,ll> chose(pair<ll,ll> a,pair<ll,ll> b){
    return min(a,b);
}
void modify(int l,int r,int id,ll tar,ll x){
    if(l==r){
        tri[id]={x,tar};
        return;
    }
    int m=(l+r)>>1;
    if(tar<=m)modify(l,m,id*2+1,tar,x);
    else modify(m+1,r,id*2+2,tar,x);
    tri[id]=chose(tri[id*2+1],tri[id*2+2]);
    return;
}
pair<ll,ll> query(int l,int r,int id,int L,int R){
    if(l==L&&r==R)return tri[id];
    int m=(l+r)>>1;
    if(L>m)return query(m+1,r,id*2+2,L,R);
    else if(R<=m)return query(l,m,id*2+1,L,R);
    else return chose(query(l,m,id*2+1,L,m),query(m+1,r,id*2+2,m+1,R));
}
long long plan_roller_coaster(vector<int> s, vector<int> t) {
    int n = (int) s.size();
    ll ans=0;
    vector<pair<ll,ll>> vc;
    set<pair<ll,ll>> st;
    for(int i=0;i<n;i++){
        vc.push_back({s[i],t[i]});
    }
    sort(vc.begin(),vc.end());
    vc.push_back({0,0});
    for(int i=0;i<n;i++){
        modify(0,n-1,0,i,vc[i].S);
        if(i==0||vc[i].F!=vc[i-1].F)st.insert(make_pair(vc[i].F,i));
    }
    ll cnt=0,now=maxn;
    while(1){
        auto x=st.lower_bound({now,0});
        if(x==st.end())break;
        auto u=query(0,n-1,0,(*x).S,n-1);
        now=u.F;
        if(u.F==maxn)break;
        modify(0,n-1,0,u.S,maxn);
        cnt++;
    }


    return cnt==n?0:1;
}

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

railroad.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
railroad_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...