2822 2023. 01. 27 07:21:07 bzsofia Óvoda cpp11 Futási hiba 4/50 92ms 8356 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 Összpont Teszt Verdikt Idő Memória
base 4/50
1 Elfogadva 0/0 3ms 1832 KiB
2 Futási hiba 0/0 7ms 2296 KiB
3 Futási hiba 0/2 2ms 2300 KiB
4 Hibás válasz 0/2 2ms 2712 KiB
5 Futási hiba 0/2 2ms 2748 KiB
6 Hibás válasz 0/2 2ms 2836 KiB
7 Hibás válasz 0/2 2ms 3044 KiB
8 Részben helyes 1/2 2ms 3132 KiB
9 Hibás válasz 0/2 2ms 3184 KiB
10 Elfogadva 2/2 2ms 3184 KiB
11 Futási hiba 0/2 2ms 3292 KiB
12 Futási hiba 0/2 2ms 3304 KiB
13 Futási hiba 0/2 3ms 3180 KiB
14 Futási hiba 0/3 3ms 3316 KiB
15 Futási hiba 0/3 12ms 4040 KiB
16 Futási hiba 0/3 25ms 4992 KiB
17 Részben helyes 1/3 43ms 5004 KiB
18 Futási hiba 0/3 54ms 6476 KiB
19 Futási hiba 0/3 59ms 6344 KiB
20 Futási hiba 0/3 64ms 6896 KiB
21 Futási hiba 0/3 75ms 7088 KiB
22 Futási hiba 0/4 92ms 8356 KiB