WA20pts求调
查看原帖
WA20pts求调
733659
鶴守丶葉七楼主2024/8/15 23:24
#include <bits/stdc++.h>
using namespace std;
#define MAXN 250005
long long n;
struct h
{
    long long a, id;
    friend bool operator<(h a, h b)
    {
        return a.id < b.id;
    }
};
h a[MAXN], b[MAXN];
priority_queue<h, vector<h>, less<h>> q;
bool vis[MAXN];
int main()
{
    cin >> n;
    for (long long i = 1; i <= n; i++)
    {
        cin >> a[i].a;
        a[i].id = i;
    }
    for (long long i = 1; i <= n; i++)
    {
        cin >> b[i].a;
        b[i].id = i;
    }
    long long res = 0;
    long long k = 0;
    for (long long i = 1; i <= n; i++)
    {
        k += a[i].a;
        if (k >= b[i].a)
        {
            k -= b[i].a;
            vis[i] = 1;
            q.push(b[i]);
            res++;
        }
        else
        {
            if (!q.empty() && q.top().a > b[i].a)
            {
                vis[i] = 1;
                vis[q.top().id] = 0;
                k += q.top().a - b[i].a;
                q.pop();
                q.push(b[i]);
            }
        }
    }
    int ans = 0;
    cout << res << endl;
    for (long long i = 1; i <= n; i++)
    {
        if(vis[i])
            cout << i << ' ';
    }
    return 0;
}
2024/8/15 23:24
加载中...