170842025-05-20 19:07:13algoproAutózáscpp17Wrong answer 30/10057ms9844 KiB
// UUID: 118d597e-619b-48ea-bc97-cdb182a611c8
#include <bits/stdc++.h>
using namespace std;
#define int long long

signed main() {
    ios::sync_with_stdio(0);cin.tie(0);
	int n,k;cin>>n>>k;
    vector<int>cost(n+2),dis(n+2,0),pref(n+2,0),p(n+2,0);
    for(int i=1;i<=n;i++){
        cin>>dis[i]>>cost[i];
        pref[i+1]=pref[i]+dis[i];
    }
    deque<int>deq;
    for(int i=1;i<=n+1;i++){
        while(!deq.empty() && pref[i]-pref[deq.front()]>k)deq.pop_front();
        p[i]=deq.front();
        while(!deq.empty() && cost[deq.back()]>=cost[i])deq.pop_back();
        deq.push_back(i);
    }
    //for(int i=1;i<=n+1;i++)cout<<p[i]<<' ';
    vector<int>t;
    int c=n+1;
    while(c!=1){
        t.push_back(c);
        c=p[c];
    }
    t.push_back(1);
    reverse(t.begin(),t.end());
    //for(int x:t)cout<<x<<' ';
    int pay=0, tank=0;
    vector<pair<int,int>>ans;
    for(int i=0;i<t.size()-1;i++){

        if(cost[t[i+1]]<cost[t[i]]){
            ans.push_back({t[i],pref[t[i+1]]-pref[t[i]]-tank});
            pay+=(pref[t[i+1]]-pref[t[i]]-tank)*cost[t[i]];
            tank=max(0LL,tank-(pref[t[i+1]]-pref[t[i]]));
        }
        else{
            if(i==(t.size()-2)){
                ans.push_back({t[i],pref[n+1]-pref[t[i]]-tank});
                pay+=(pref[n+1]-pref[t[i]]-tank)*cost[t[i]];
            }
            else{
                ans.push_back({t[i],k-tank});
                pay+=(k-tank)*cost[t[i]];
                tank=(k-(pref[t[i+1]]-pref[t[i]]));	
            }
        }
        //cout<<cost[t[i+1]]<<' '<<cost[t[i]]<<' '<<tank<<' '<<i<<'\n';
    }
    cout<<pay<<' '<<ans.size()<<'\n';
    for(pair<int,int> x:ans)cout<<x.first<<' '<<x.second<<'\n';
}
SubtaskSumTestVerdictTimeMemory
base30/100
1Accepted0/01ms512 KiB
2Wrong answer0/057ms9784 KiB
3Accepted5/51ms316 KiB
4Accepted5/51ms316 KiB
5Accepted5/51ms316 KiB
6Accepted5/51ms316 KiB
7Accepted5/51ms316 KiB
8Wrong answer0/51ms316 KiB
9Accepted5/51ms316 KiB
10Wrong answer0/51ms428 KiB
11Wrong answer0/514ms2564 KiB
12Wrong answer0/521ms3564 KiB
13Wrong answer0/517ms3300 KiB
14Wrong answer0/535ms5940 KiB
15Wrong answer0/535ms6196 KiB
16Wrong answer0/535ms5920 KiB
17Wrong answer0/535ms5940 KiB
18Wrong answer0/532ms5740 KiB
19Wrong answer0/552ms8920 KiB
20Wrong answer0/552ms9012 KiB
21Wrong answer0/557ms9712 KiB
22Wrong answer0/557ms9844 KiB