28222023-01-27 07:21:07bzsofiaÓvodacpp11Futási hiba 4/5092ms8356 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <deque>

using namespace std;

struct adat
{
    int vagy, poz, konny, lett;
};

struct adat2
{
    int fer, van;
};

bool comp (adat a, adat b)
{
    return a.konny>b.konny;
}

bool comp2 (adat a, adat b)
{
    return a.poz<b.poz;
}

int i, n, m, sir, maradt;
deque <int> maradek;

int main()
{
    cin>>n>>m;
    vector <adat2> szerep(m+1);
    vector <adat> gyerek(n+1);

    for (i=1; i<=m; ++i) cin>>szerep[i].fer;

    for (i=1; i<=n; ++i)
    {
        cin>>gyerek[i].vagy;
        gyerek[i].poz=i;
    }

    for (i=1; i<=n; ++i) cin>>gyerek[i].konny;

    sort (gyerek.begin()+1, gyerek.end(), comp);

    maradt=m;
    for (i=1; i<=n; ++i)
    {
        if (n-i+1==maradt)
        {
            sir+=gyerek[i].konny;
            maradek.push_back(i);
        }
        else if (szerep[gyerek[i].vagy].fer)
        {
            if (!szerep[gyerek[i].vagy].van==0) --maradt;
            --szerep[gyerek[i].vagy].fer;
            szerep[gyerek[i].vagy].van=1;
            gyerek[i].lett=gyerek[i].vagy;
        }else
        {
            sir+=gyerek[i].konny;
            maradek.push_back(i);
        }
        //cout<<gyerek[i].konny<<" ";
    }

    for (i=1; i<=m; ++i)
    {
        if (!szerep[i].van)
        {
            gyerek[maradek.front()].lett=i;
            szerep[i].van=1;
            --szerep[i].fer;
            maradek.pop_front();
        }
    }

    while (!maradek.empty() && i<=n)
    {
        if (szerep[i].fer)
        {
            gyerek[maradek.front()].lett=i;
            maradek.pop_front();
            --szerep[i].fer;
        }else ++i;
    }

    sort (gyerek.begin()+1, gyerek.end(), comp2);

    cout<<sir<<"\n";
    for (i=1; i<=n; ++i)
    {
        cout<<gyerek[i].lett<<" ";
    }

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base4/50
1Elfogadva0/03ms1832 KiB
2Futási hiba0/07ms2296 KiB
3Futási hiba0/22ms2300 KiB
4Hibás válasz0/22ms2712 KiB
5Futási hiba0/22ms2748 KiB
6Hibás válasz0/22ms2836 KiB
7Hibás válasz0/22ms3044 KiB
8Részben helyes1/22ms3132 KiB
9Hibás válasz0/22ms3184 KiB
10Elfogadva2/22ms3184 KiB
11Futási hiba0/22ms3292 KiB
12Futási hiba0/22ms3304 KiB
13Futási hiba0/23ms3180 KiB
14Futási hiba0/33ms3316 KiB
15Futási hiba0/312ms4040 KiB
16Futási hiba0/325ms4992 KiB
17Részben helyes1/343ms5004 KiB
18Futási hiba0/354ms6476 KiB
19Futási hiba0/359ms6344 KiB
20Futási hiba0/364ms6896 KiB
21Futási hiba0/375ms7088 KiB
22Futási hiba0/492ms8356 KiB