Submission #53450758


Source Code Expand

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const ll INF=1e18;
template<typename T>
bool chmax(T &a,T b){
    if(a<b){
        a=b;
        return true;
    }
    return false;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    ll n,c,m;
    cin>>n>>c>>m;
    vector<ll> dp(n+1,-INF);
    dp[1]=0;
    struct func{
        ll a,b,d;
        ll get(ll x){
            return d-abs(x-b)*a;
        }
        bool operator<(const func& o) const{
            return b<o.b;
        }
    };
    set<func> trick;
    trick.insert(func{c,1,dp[1]});
    auto add=[&](func l)->void{
        bool DO=true;
        auto itr=trick.lower_bound(l);
        if(itr!=trick.end()){
            func cur=*itr;
            while(cur.d<=l.get(cur.b)){
                trick.erase(cur);
                itr=trick.lower_bound(l);
                if(itr==trick.end()) break;
                cur=*itr;
            }
            if(l.d<=cur.get(l.b)){
                DO=false;
            }
        }
        if(itr!=trick.begin()){
            itr--;
            func cur=*itr;
            while(cur.d<=l.get(cur.b)){
                trick.erase(cur);
                itr=trick.lower_bound(l);
                if(itr==trick.begin()) break;
                itr--;
                cur=*itr;
            }
            if(l.d<=cur.get(l.b)){
                DO=false;
            }
        }
        if(DO) trick.insert(l);
    };
    for(int i=0;i<m;i++){
        ll t,p;
        cin>>t>>p;
        ll tmp=-INF;
        func f=func{c,t,dp[t]};
        auto itr=trick.lower_bound(f);
        if(itr!=trick.end()){
            func cur=*itr;
            chmax(tmp,cur.get(t));
        }
        if(itr!=trick.begin()){
            itr--;
            func cur=*itr;
            chmax(tmp,cur.get(t));
        }
        tmp+=p;
        chmax(dp[t],tmp);
        add(func{c,t,dp[t]});
    }
    cout<<*max_element(dp.begin(),dp.end())<<endl;
}

Submission Info

Submission Time
Task G - Merchant Takahashi
User kaichou243
Language C++ 20 (gcc 12.2)
Score 550
Code Size 2036 Byte
Status AC
Exec Time 112 ms
Memory 10928 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 550 / 550
Status
AC × 4
AC × 69
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 01_random_33.txt, 01_random_34.txt, 01_random_35.txt, 01_random_36.txt, 01_random_37.txt, 01_random_38.txt, 01_random_39.txt, 01_random_40.txt, 01_random_41.txt, 01_random_42.txt, 01_random_43.txt, 01_random_44.txt, 01_random_45.txt, 01_random_46.txt, 01_random_47.txt, 01_random_48.txt, 01_random_49.txt, 01_random_50.txt, 01_random_51.txt, 01_random_52.txt, 01_random_53.txt, 01_random_54.txt, 01_random_55.txt, 01_random_56.txt, 01_random_57.txt, 01_random_58.txt, 01_random_59.txt, 01_random_60.txt, 01_random_61.txt, 01_random_62.txt, 01_random_63.txt, 01_random_64.txt, 01_random_65.txt, 01_random_66.txt, 01_random_67.txt, 01_random_68.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3612 KiB
00_sample_01.txt AC 1 ms 3472 KiB
00_sample_02.txt AC 1 ms 3568 KiB
00_sample_03.txt AC 1 ms 3436 KiB
01_random_04.txt AC 72 ms 4600 KiB
01_random_05.txt AC 80 ms 4636 KiB
01_random_06.txt AC 27 ms 4648 KiB
01_random_07.txt AC 32 ms 4728 KiB
01_random_08.txt AC 31 ms 4596 KiB
01_random_09.txt AC 31 ms 4596 KiB
01_random_10.txt AC 72 ms 4640 KiB
01_random_11.txt AC 80 ms 4676 KiB
01_random_12.txt AC 29 ms 4672 KiB
01_random_13.txt AC 33 ms 4652 KiB
01_random_14.txt AC 32 ms 4584 KiB
01_random_15.txt AC 32 ms 4676 KiB
01_random_16.txt AC 72 ms 4592 KiB
01_random_17.txt AC 80 ms 4600 KiB
01_random_18.txt AC 33 ms 4636 KiB
01_random_19.txt AC 31 ms 4592 KiB
01_random_20.txt AC 31 ms 4604 KiB
01_random_21.txt AC 32 ms 4596 KiB
01_random_22.txt AC 72 ms 4632 KiB
01_random_23.txt AC 80 ms 4588 KiB
01_random_24.txt AC 81 ms 4596 KiB
01_random_25.txt AC 32 ms 4644 KiB
01_random_26.txt AC 31 ms 4776 KiB
01_random_27.txt AC 32 ms 4548 KiB
01_random_28.txt AC 72 ms 4648 KiB
01_random_29.txt AC 82 ms 4772 KiB
01_random_30.txt AC 83 ms 4596 KiB
01_random_31.txt AC 33 ms 4588 KiB
01_random_32.txt AC 32 ms 4672 KiB
01_random_33.txt AC 32 ms 4668 KiB
01_random_34.txt AC 72 ms 4580 KiB
01_random_35.txt AC 80 ms 4556 KiB
01_random_36.txt AC 83 ms 4776 KiB
01_random_37.txt AC 36 ms 4560 KiB
01_random_38.txt AC 44 ms 4668 KiB
01_random_39.txt AC 42 ms 4532 KiB
01_random_40.txt AC 72 ms 4728 KiB
01_random_41.txt AC 79 ms 4488 KiB
01_random_42.txt AC 84 ms 4596 KiB
01_random_43.txt AC 52 ms 4596 KiB
01_random_44.txt AC 55 ms 4780 KiB
01_random_45.txt AC 50 ms 4660 KiB
01_random_46.txt AC 72 ms 4596 KiB
01_random_47.txt AC 80 ms 4592 KiB
01_random_48.txt AC 83 ms 4552 KiB
01_random_49.txt AC 55 ms 4776 KiB
01_random_50.txt AC 55 ms 4584 KiB
01_random_51.txt AC 50 ms 4588 KiB
01_random_52.txt AC 12 ms 3572 KiB
01_random_53.txt AC 17 ms 4204 KiB
01_random_54.txt AC 28 ms 3800 KiB
01_random_55.txt AC 13 ms 3516 KiB
01_random_56.txt AC 37 ms 4132 KiB
01_random_57.txt AC 4 ms 3540 KiB
01_random_58.txt AC 25 ms 4408 KiB
01_random_59.txt AC 42 ms 3800 KiB
01_random_60.txt AC 50 ms 4536 KiB
01_random_61.txt AC 25 ms 4628 KiB
01_random_62.txt AC 16 ms 3436 KiB
01_random_63.txt AC 21 ms 4588 KiB
01_random_64.txt AC 112 ms 10928 KiB
01_random_65.txt AC 9 ms 5124 KiB
01_random_66.txt AC 92 ms 4572 KiB
01_random_67.txt AC 24 ms 3624 KiB
01_random_68.txt AC 25 ms 3420 KiB