225882026-01-15 11:39:53szasztundeBányász RPG (40 pont)cpp17Hibás válasz 36/4029ms1080 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
struct par
{
    int tap,menny;
};
bool hasonlit(par x,par y){
        return x.tap<y.tap;
}
int main()
{
    ios_base::sync_with_stdio(false);
	cin.tie(NULL);
    int n;
	cin>>n;
	vector <par> a(n);
	for(int i=0;i<n;i++) cin>>a[i].tap;
	for(int i=0;i<n;i++) cin>>a[i].menny;
	sort(a.begin(),a.end(),hasonlit);
	//for(int i=0;i<n;i++) cout<<a[i].tap<<" "<<a[i].menny<<endl;
	int i=0,j=n-1,perc=0,tapp=0;
	while(i<=j)
    {
        while(a[i].tap<=tapp && i<=j)
        {
            perc+=a[i].menny;
            tapp+=a[i].menny;
            i++;
        }
        if(i<=j)
        {
            int ennyi=a[i].tap-tapp;
            if(ennyi>=a[j].menny)
                {
                perc+=2*a[j].menny;
                tapp+=a[j].menny;
                j--;
            }
            else
            {
                perc+=2*ennyi;
                tapp+=ennyi;;
                a[j].menny-=ennyi;
            }
        }

        /*while(a[i].tap>tapp)
        {
            if(a[j].tap<=tapp)
            {
                perc+=a[j].menny;
                tapp+=a[j].menny;
                j--;
            }
            else
            {
                perc+=2;
                tapp++;
                a[j].menny--;
            }
        }*/
    }
    cout<<perc;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base36/40
1Elfogadva0/01ms332 KiB
2Elfogadva0/06ms540 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/24ms316 KiB
6Elfogadva2/28ms588 KiB
7Elfogadva2/22ms316 KiB
8Elfogadva2/22ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms384 KiB
12Elfogadva3/31ms316 KiB
13Elfogadva4/42ms316 KiB
14Elfogadva4/41ms328 KiB
15Hibás válasz0/217ms820 KiB
16Elfogadva2/223ms820 KiB
17Hibás válasz0/218ms820 KiB
18Elfogadva2/229ms1080 KiB