166322025-05-07 17:09:16algoproAutózáscpp17Forditási hiba
// UUID: b3702e77-6cc3-49af-9205-b8e857b9cbe6
#include <bits/stdc++.h>
using namespace std;
using ll=long long;

#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define vi vector<int>
#define pii pair<int,int>

const int maxn=3e5+1;

vector<int> tree(maxn);

int f(int x){
    return x&(-x);
}

int get(int x){
    int res=0;
    while (x>=0){
        res+=tree[x];
        x-=f(x);
    }
    return res;
}

void add(int x, int val){
    while (x<maxn){
        tree[x]+=val;
        x+=f(x);
    }
}

struct kut {
    int loc;
    int price;
    int ind;

    auto operator< (kut &other){
        return price<other.price;
    }
};

void solve(){
    int n, k;
    cin>>n>>k;
    priority_queue<kut> q;
    int cur=k;
    vector<kut> ans;
    int loc=0;
    int total=0;
    for (int i=0;i<n;i++){
        int a,b;
        cin>>a>>b;
        loc+=a;
        cur-=a;
        while (cur<0){
            while (!ans.empty() && q.top().loc<ans.back().loc) q.pop();
            auto v = q.top();
            q.pop();
            int space = k+get(v.loc)-v.loc;
            if (space<=-cur){
                cur+=space;
                add(v.loc, space);
                ans.push_back({v.loc, space, v.ind});
                total+=space*v.price;
            }
            else {
                add(v.loc, -cur);
                q.push(v);
                ans.push_back({v.loc, -cur, v.ind});
                total+=(-cur)*v.price;
                cur=0;
            }
        }
        q.push({loc, b, i});
    }
    vector<int> kutak(n);
    int cnt=0;
    for (auto i : ans){
        kutak[i.ind]+=i.price;
    }
    for (int i : kutak) if (i) cnt++;
    cout<<total<<" "<<cnt<<"\n";
    for (int i=0;i<n;i++){
        if (kutak[i]) cout<<i+1<<" "<<kutak[i]<<"\n";
    }
}

int main() {
    ios_base::sync_with_stdio(0);cin.tie(0);
    int t=1;
    //cin>>t;
    while (t--){
        solve();
    }
}
Forditási hiba
open /var/local/lib/isolate/435/box/a.out: no such file or directory
In file included from /usr/include/c++/12/string:48,
                 from /usr/include/c++/12/bits/locale_classes.h:40,
                 from /usr/include/c++/12/bits/ios_base.h:41,
                 from /usr/include/c++/12/ios:42,
                 from /usr/include/c++/12/istream:38,
                 from /usr/include/c++/12/sstream:38,
                 from /usr/include/c++/12/complex:45,
                 from /usr/include/c++/12/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/12/bits/stdc++.h:54,
                 from main.cpp:2:
/usr/include/c++/12/bits/stl_function.h: In instantiation of 'constexpr bool std::less<_Tp>::operator()(const _Tp&, const _Tp&) const [with _Tp = kut]':
/usr/include/c++/12/bits/predefined_ops.h:196:23:   required from 'bool __gnu_cxx::__ops::_Iter_comp_val<_Compare>::operator()(_Iterator, _Value&) [with _Iterator = __gnu_cxx::__normal_iterator<kut*, std::vector<kut, std::allocator<kut> > >; _Value = kut; _Compare = std::less<kut>]'
/usr/include/c++/12/bits/stl_heap.h:140:48:   required from 'void std::__push_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<kut*, vector<kut, allocator<kut> > >; _Distance = long int; _Tp = kut; _Compare = __gnu_cxx::__ops::_Iter_comp_val<less<kut> >]'
/usr/include/c++/12/bits/stl_heap.h:216:23:   required from 'void std::push_heap(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator<kut*, vector<kut, allocator<kut> > >; _Compare = less<kut>]'
/usr/include/c++/12/bits/stl_queue.h:741:16:   required from 'void std::priority_queue<_Tp, _Sequence, _Compare>::push(const value_type&) [with _Tp = kut; _Sequence = std::vector<kut, std::allocator<kut> >; _Compare = std::less<kut>; value_type = kut]'
main.cpp:71:23:   required from here
/usr/include/c++/12/bits/stl_function.h:408:20: error: no match for 'operator<' (operand types are 'const kut' and 'const kut')
  408 |       {...