244872026-02-12 09:31:23BitProBányász RPG (40 pont)cpp17Accepted 40/4068ms1588 KiB
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

long long n, totaltime=0, xp=0;

struct erc
{
    long long kuszob, db;
};

bool cmp (erc a, erc b)
{
    return a.kuszob < b.kuszob;
}
vector<erc> lista;
int main()
{
    cin>>n;
    lista.resize(n);

    for(int i=0; i<n; i++)        ///beolvas
    {
        cin>>lista[i].kuszob;
    }
    for(int i=0; i<n; i++)
    {
        cin>>lista[i].db;
    }                           ///idaig

    int i=0, j=n-1;
    sort(lista.begin(), lista.end(), cmp);
    while (i < j)
{
    if (xp >= lista[i].kuszob)
    {
        xp += lista[i].db;
        totaltime += lista[i].db;
        i++;
    }
    else
    {
        long long need = lista[i].kuszob - xp;

        if (need <= 0)
        {
            i++;
            continue;
        }

        if (lista[j].db > need)
        {
            lista[j].db -= need;
            xp += need;
            totaltime += 2 * need;
        }
        else
        {
            xp += lista[j].db;
            totaltime += 2 * lista[j].db;
            j--;
        }
    }
}
    while(lista[i].db >0)
    {
        if(xp<lista[i].kuszob)
        {
            totaltime+=2;
        }
        else
        {
            totaltime++;
        }
        xp++;
        lista[i].db--;
    }
    cout << totaltime;
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base40/40
1Accepted0/01ms316 KiB
2Accepted0/013ms564 KiB
3Accepted2/21ms316 KiB
4Accepted2/21ms320 KiB
5Accepted2/29ms564 KiB
6Accepted2/219ms864 KiB
7Accepted2/23ms508 KiB
8Accepted2/24ms552 KiB
9Accepted3/31ms316 KiB
10Accepted3/31ms316 KiB
11Accepted3/31ms324 KiB
12Accepted3/31ms316 KiB
13Accepted4/42ms508 KiB
14Accepted4/41ms316 KiB
15Accepted2/239ms1200 KiB
16Accepted2/252ms1524 KiB
17Accepted2/241ms1232 KiB
18Accepted2/268ms1588 KiB