171042025-05-22 17:49:22algoproAutózáscpp17Hibás válasz 30/10059ms7476 KiB
// UUID: fefd07b3-ad50-4ff4-8c87-7d4a493c82b5
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n,k;
    cin >>n >> k;
    vector<pair<int,int>>v(n+1);
    int pos = 0;
    for(int i = 0; i <n; i++){
        int a;
        cin >> a>> v[i].first;
        v[i].second = pos;
        pos+= a;
    }
    v[n] = {0,pos};
    vector<int>prev(n+1);
    deque<int>pakli;
    pakli.push_back(0);
    for(int i = 1; i <= n; i++){
        while(!pakli.empty() && v[pakli.front()].second+k < v[i].second)
            pakli.pop_front();
        prev[i] = pakli.front();

        while(!pakli.empty() && v[pakli.back()].first > v[i].first)
            pakli.pop_back();
        pakli.push_back(i);

    }
    int i = n;
    int sum = 0;
    vector<int>s;
    while(i){
        i = prev[i];
        s.push_back(i);
    }
    reverse(s.begin(),s.end());
    s.push_back(n);
    vector< pair<int,int>>ans;
    int tank = 0;
    for(int i = 0; i < s.size()-1; i++){
        int b = 0;
        if(v[s[i]].first < v[s[i+1]].first){
            b = k-tank;
        }else b = v[s[i+1]].second-v[s[i]].second-tank;
        sum+= v[s[i]].first*b;
        tank+= b;
        tank-= v[s[i+1]].second-v[s[i]].second;
        ans.push_back({s[i]+1,b});
    }
    
    
    cout << sum << " " << ans.size() << "\n";
    
    for(auto [a,b] : ans){
        cout << a << " " << b << "\n";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base30/100
1Elfogadva0/01ms316 KiB
2Hibás válasz0/059ms7476 KiB
3Elfogadva5/51ms316 KiB
4Elfogadva5/51ms316 KiB
5Elfogadva5/51ms316 KiB
6Elfogadva5/51ms316 KiB
7Elfogadva5/51ms508 KiB
8Hibás válasz0/51ms316 KiB
9Elfogadva5/51ms384 KiB
10Hibás válasz0/51ms316 KiB
11Hibás válasz0/514ms2100 KiB
12Hibás válasz0/521ms2896 KiB
13Hibás válasz0/517ms2588 KiB
14Hibás válasz0/537ms4652 KiB
15Hibás válasz0/537ms4752 KiB
16Hibás válasz0/534ms4404 KiB
17Hibás válasz0/535ms4408 KiB
18Hibás válasz0/534ms4404 KiB
19Hibás válasz0/554ms6708 KiB
20Hibás válasz0/554ms6964 KiB
21Hibás válasz0/556ms7220 KiB
22Hibás válasz0/559ms7476 KiB