WA on #11 求条
查看原帖
WA on #11 求条
664034
_xxxxx_楼主2024/8/6 21:19
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 3e5 + 10;
int n , x, y;
int su1[N], su2[N];
priority_queue<int, vector<int>, greater<int> > p;
struct node
{
    int a, b;
}pa[N];
bool cmp(node a, node b)
{
    return a.a - a.b > b.a - b.b;
}
int ans2, z;
signed main()
{
    cin >> x >> y >> z;
    n = n + x + y + z;
    for(int i = 1; i <= n; i++)
    {
        int x;
        cin >> x >> pa[i].a >> pa[i].b;
        pa[i].a -= x, pa[i].b -= x;
        ans2 += x;
    }
    sort(pa + 1, pa + n + 1, cmp);
    for(int i = 1, now = 0; i <= n; i++)
    {
        p.push(pa[i].a);
        now += pa[i].a;
        if(p.size() > y){now -= p.top(), p.pop();}
        su1[i] = now;
    }
    while(!p.empty()) p.pop();
    for(int i = n, now = 0; i; i--)
    {
        p.push(pa[i].b);
        now += pa[i].b;
        if(p.size() > z){now -= p.top(), p.pop();}
        su2[i] = now;
    }
    int ans = 0;
    for(int i = y; i <= n - z; i++) ans = max(ans, su1[i] + su2[i + 1]); 
    cout << ans + ans2 << endl;
    return 0;
}
2024/8/6 21:19
加载中...