9286 2024. 02. 19 19:43:15 anti Bányász RPG (40 pont) cpp17 Hibás válasz 29/40 381ms 6392 KiB
#include <iostream>
#include <algorithm>

using namespace std;

struct alapanyag{
    int l, m;
    int ido = 2;
    bool kesz = false;
};

bool kisebb(alapanyag A1, alapanyag A2){
    return A1.l < A2.l;
}

int main()
{
    int n;
    cin >> n;
    alapanyag A[n];
    for(int i=0; i<n; i++){
        cin >> A[i].l;
    }
    for(int i=0; i<n; i++){
        cin >> A[i].m;
    }
    sort(A, A+n, kisebb);
    /*
    cout << endl;
    for(int i=0; i<n; i++){
        cout << A[i].l << " ";
    }
    cout << endl;
    for(int i=0; i<n; i++){
        cout << A[i].m << " ";
    }
    cout << endl << endl;
    */
    int t=0;

    int h=0, k=n-1;
    int c, xp = 0;
    while(h!=k){
        c = A[h].l;
        while(A[k].m - c < 0){
            c -= A[k].m;
            t += 2 * A[k].m;
            xp = A[k].m;
            k--;
        }
        A[k].m -= c;
        t += 2 * c;
        xp += c;
        while(xp >= A[h].l && h<=k){
            t += A[h].m;
            xp += A[h].m;
            h++;
        }
        h--;
    }
    //cout << xp << endl;
    cout << t << endl;
}

/*
5
2 3 5 6 7
4 2 2 6 5
*/
Részfeladat Összpont Teszt Verdikt Idő Memória
base 29/40
1 Elfogadva 0/0 3ms 1748 KiB
2 Elfogadva 0/0 14ms 2404 KiB
3 Elfogadva 2/2 3ms 2124 KiB
4 Elfogadva 2/2 3ms 2344 KiB
5 Elfogadva 2/2 10ms 3000 KiB
6 Elfogadva 2/2 21ms 3748 KiB
7 Elfogadva 2/2 4ms 2892 KiB
8 Elfogadva 2/2 6ms 2980 KiB
9 Hibás válasz 0/3 3ms 3036 KiB
10 Elfogadva 3/3 3ms 3056 KiB
11 Elfogadva 3/3 3ms 3188 KiB
12 Elfogadva 3/3 3ms 3272 KiB
13 Elfogadva 4/4 3ms 3404 KiB
14 Elfogadva 4/4 3ms 3608 KiB
15 Hibás válasz 0/2 39ms 5236 KiB
16 Időlimit túllépés 0/2 377ms 6092 KiB
17 Hibás válasz 0/2 43ms 5532 KiB
18 Időlimit túllépés 0/2 381ms 6392 KiB