28712023-02-01 11:21:30bzsofiaÓvodacpp11Hibás válasz 33/50442ms7424 KiB
// ovoda.cpp : This file contains the 'main' function. Program execution begins and ends there.
//

//#include <fstream>
#include <iostream>
#include <vector>
#include <deque>
#include <algorithm>

//#define int long long

using namespace std;

//ifstream fin("ovoda.in");

int i, n, m, ures, szerep, sir, j;
deque <int> maradek;

struct adat1
{
    int fer;
    bool van=0;
};

struct adat2
{
    int konny, cel, poz, lett;
};

bool comp1 (adat2 a, adat2 b)
{
    return a.konny > b.konny;
}

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

int main()
{
    cin >> n >> m;
    vector <adat1> szin(m + 1);
    vector <adat2> gyerek(n + 1);
    for (i = 1; i <= m; ++i)
    {
        cin >> szin[i].fer;
    }

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

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

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

    ures = m;
    for (i = 1; i <= n; ++i)
    {
        szerep = gyerek[i].cel;
        if (szin[szerep].fer)
        {
            if (!szin[szerep].van)
            {
                szin[szerep].van = 1;
            }
            gyerek[i].lett = szerep;
            --szin[szerep].fer;
        }
        else
        {
            maradek.push_back(i);
            sir += gyerek[i].konny;
        }
    }

    for (i = 1; i <= m; ++i)
    {
        if (!szin[i].van)
        {
            if (!maradek.empty())
            {
                szin[i].van = 1;
                --szin[i].fer;
                gyerek[maradek.front()].lett = i;
                maradek.pop_front();
            }
            else
            {
                for (j = n; j >= 1; --j)
                {
                    if (gyerek[j].lett == gyerek[j].cel)
                    {
                        szin[i].van = 1;
                        --szin[i].fer;
                        gyerek[j].lett = i;
                        sir += gyerek[j].konny;
                        break;
                    }
               }
            }
        }
    }

    i = 1;
    while (!maradek.empty() && i<=m)
    {
        while (!maradek.empty() && szin[i].fer)
        {
            --szin[i].fer;
            gyerek[maradek.front()].lett = i;
            maradek.pop_front();
        }
        ++i;
    }

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

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

    return 0;
}

// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu

// Tips for Getting Started: 
//   1. Use the Solution Explorer window to add/manage files
//   2. Use the Team Explorer window to connect to source control
//   3. Use the Output window to see build output and other messages
//   4. Use the Error List window to view errors
//   5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
//   6. In the future, to open this project again, go to File > Open > Project and select the .sln file
RészfeladatÖsszpontTesztVerdiktIdőMemória
base33/50
1Elfogadva0/03ms1968 KiB
2Elfogadva0/07ms2240 KiB
3Elfogadva2/23ms2440 KiB
4Elfogadva2/23ms2532 KiB
5Elfogadva2/23ms2764 KiB
6Elfogadva2/22ms2740 KiB
7Hibás válasz0/23ms2872 KiB
8Elfogadva2/23ms2976 KiB
9Elfogadva2/22ms3060 KiB
10Elfogadva2/22ms3300 KiB
11Elfogadva2/22ms3180 KiB
12Elfogadva2/23ms3424 KiB
13Hibás válasz0/23ms3508 KiB
14Elfogadva3/33ms3516 KiB
15Hibás válasz0/314ms3828 KiB
16Hibás válasz0/330ms4604 KiB
17Elfogadva3/343ms5140 KiB
18Hibás válasz0/3138ms6324 KiB
19Elfogadva3/381ms6268 KiB
20Elfogadva3/386ms6912 KiB
21Elfogadva3/3100ms7424 KiB
22Időlimit túllépés0/4442ms5640 KiB