sub1#1没过unappcated100求助
查看原帖
sub1#1没过unappcated100求助
1111300
ayszYW楼主2024/3/4 21:38

#include <bits/stdc++.h>
using namespace std;
#define MAX 10001000
#define int long long

int n, ans[MAX], v[MAX], qz[MAX], na=0;

struct Cy {
    int s, a;
} arr[MAX];

bool cmp(Cy x, Cy y) { return x.a < y.a; }
signed main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        scanf("%d",&arr[i].s); 
    }
    for (int i = 1; i <= n; i++) {
        scanf("%d",&arr[i].a); 
    }
    sort(arr + 1, arr + n + 1, cmp);
    /*
    for(int i=1;i<=n;i++)cout<<arr[i].s<<" ";
    cout<<endl;
    for(int i=1;i<=n;i++)cout<<arr[i].a<<" ";
    cout<<endl;
    */
    int sxd=0, fl=0;
    for (int i = 1; i <= n; i++) {
        if (ans[1] + fl < arr[i].s * 2 + arr[i].a) {
            ans[1] = arr[i].a;
            fl = 2 * arr[i].s;
            sxd = i;
            na = arr[i].a;
        }
    }
    v[sxd] = 1;
    cout << fl + ans[1] << endl;
    // cout<<ans[1]<<' '<<l<<' '<<arr[sxd].xd<<endl;
    for (int i = n; i >=1; i--) {
        if (v[i] == 1)
            i--, ans[n-i+2] = ans[n-i+1];
        if (arr[i].s > fl / 2)
            na += arr[i].a, ans[n-i+2] = na, fl = 2 * arr[i].s;
        else
            na += arr[i].a, ans[n-i+2] = na;
            printf("%d\n",fl + ans[n-i+2]);
        // cout<<ans[i+1]<<' '<<l<<' '<<arr[i].xd<<endl;
    }
    return 0;
}

2024/3/4 21:38
加载中...