171052025-05-22 18:03:11algoproAutózáscpp17Hibás válasz 20/10059ms4916 KiB
// UUID: d505cbd3-7513-4bdd-901f-bce49cb97afc
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define pii pair<int,int>
#define vi vector<int>
#define vvi vector<vector<int>>
#define F first
#define S second
#define endl "\n"
//#define int long long

signed main() {
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int n, k; cin >> n >> k;
    vector<array<int, 2>>v(n+1);
    for(int i=1;i<=n;i++)
    {
        cin >> v[i][0] >> v[i][1];
    }
    deque<int>dq; //lehetne stack de idc
    vi rs(n+1);
    for(int i=n;i>0;i--)
    {
        while(!dq.empty() && v[dq.back()][1] >= v[i][1]) dq.pop_back();
        if(!dq.empty()) rs[i] = dq.back();
        else rs[i] = n+1;
        dq.push_back(i);
    }
    vi dpref(n+1);
    for(int i=1;i<=n;i++) dpref[i] = dpref[i-1]+v[i][0];
    int tank=0;
    vector<array<int,2>>ans;
    int total=0;
    int i=1;
    while(i<=n)
    {
        if(tank>=v[i][0])
        {
            tank -= v[i][0];
            i++;
            continue;
        }
        
        
        else if(k >= dpref[rs[i]-1] - dpref[i-1])
        {
            int d = dpref[rs[i]-1] - dpref[i-1];
            total += (d - tank)*v[i][1];
            ans.pb({i, d-tank});
            tank = d;
        }
        else
        {
            total += (k-tank)*v[i][1];
            ans.pb({i, k-tank});
            tank = k;
        }
        tank -= v[i][0];
        i++;
    }
    cout << total << " " << ans.size() << endl;
    for(auto a : ans) cout << a[0] << " " << a[1] << endl;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base20/100
1Hibás válasz0/01ms508 KiB
2Hibás válasz0/059ms4916 KiB
3Elfogadva5/51ms316 KiB
4Elfogadva5/51ms316 KiB
5Elfogadva5/51ms384 KiB
6Hibás válasz0/51ms316 KiB
7Elfogadva5/51ms316 KiB
8Hibás válasz0/51ms316 KiB
9Hibás válasz0/51ms316 KiB
10Hibás válasz0/51ms316 KiB
11Hibás válasz0/514ms1416 KiB
12Hibás válasz0/521ms2100 KiB
13Hibás válasz0/518ms1660 KiB
14Hibás válasz0/537ms3124 KiB
15Hibás válasz0/535ms3156 KiB
16Hibás válasz0/532ms3080 KiB
17Hibás válasz0/535ms3108 KiB
18Hibás válasz0/532ms2860 KiB
19Hibás válasz0/552ms4660 KiB
20Hibás válasz0/552ms4672 KiB
21Hibás válasz0/554ms4756 KiB
22Hibás válasz0/557ms4916 KiB