181102025-09-30 18:59:08tamasmarkMekk Mester munkái (50 pont)cpp17Hibás válasz 0/50699ms1592 KiB
// Mekmester.cpp : This file contains the 'main' function. Program execution begins and ends there.
//

#include <iostream>
#include <vector>
#include <algorithm>
#include <deque>
using namespace std;
struct adat
{
    int first, second, index;
};
int n, megrendelesek,kezd,veg,nap_mester_k,nap_mester_v,nap_fia_k,nap_fia_v;
deque<int>mester;
deque<int>fia;
vector<adat>rendeles;
void csere(int& a, int& b)
{
    a = a + b;
    b = a - b;
    a = a - b;
}
void rendezes(vector<adat>& vec)
{
    for (int i = 1; i < megrendelesek; ++i)
    {
        for (int j = i + 1; j <= megrendelesek; ++j)
        {
            if ((vec[i].second - vec[i].first) > (vec[j].second - vec[j].first))
            {
                csere(vec[i].first, vec[j].first);
                csere(vec[i].second, vec[j].second);
                csere(vec[i].index, vec[j].index);
            }
        }
    }
}
void elso(vector<adat>& rendeles, int& nap_mester_k, int& nap_mester_v,deque<int>&master)
{
    for (int i = 1; i <= megrendelesek; ++i)
    {
        if (rendeles[i].index != 0)
        {
            nap_mester_k = rendeles[i].first;
            nap_mester_v = rendeles[i].second;
            master.push_back(rendeles[i].index);
            rendeles[i].index = 0;
            return;
        }
    }
}
void orarend(vector<adat>& rendeles, deque<int>& mester)
{
    for (int i = 1; i <= megrendelesek && nap_mester_v <= megrendelesek; ++i)
    {
        if (rendeles[i].index != 0 && rendeles[i].first > nap_mester_v)
        {
            nap_mester_v = rendeles[i].second;
            mester.push_back(rendeles[i].index);
            rendeles[i].index = 0;
        }
        else if (rendeles[i].index != 0 && rendeles[i].second < nap_mester_k)
        {
            nap_mester_k = rendeles[i].first;
            mester.push_front(rendeles[i].index);
            rendeles[i].index = 0;
        }
    }
}
int main()
{
    cin >> megrendelesek >> n;
    rendeles.resize(megrendelesek + 1);
    for (int i = 1; i <= megrendelesek; ++i)
    {
        cin >> kezd >> veg;
        rendeles[i] = { kezd,veg,i };
    }
    rendezes(rendeles);
    int szama;
    elso(rendeles, nap_mester_k, nap_mester_v,mester);
    orarend(rendeles, mester);
    nap_mester_k = 0;
    nap_mester_v = 0;
    elso(rendeles, nap_mester_k, nap_mester_v,fia);
    orarend(rendeles, fia);
    cout << mester.size() << " " << fia.size() << "\n";
    for (auto& e : mester) cout << e << " ";

    cout << "\n";

    for (auto& e : fia) cout << e << " ";
    return 0;
}
/*
10 14
2 4
1 7
7 12
10 12
3 9
4 5
6 6
8 10
10 13
3 7


*/
// 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
base0/50
1Elfogadva0/01ms500 KiB
2Hibás válasz0/0347ms524 KiB
3Hibás válasz0/11ms316 KiB
4Hibás válasz0/11ms316 KiB
5Hibás válasz0/21ms316 KiB
6Hibás válasz0/21ms316 KiB
7Hibás válasz0/21ms316 KiB
8Hibás válasz0/21ms316 KiB
9Hibás válasz0/31ms316 KiB
10Hibás válasz0/14ms508 KiB
11Hibás válasz0/14ms316 KiB
12Hibás válasz0/24ms508 KiB
13Hibás válasz0/24ms316 KiB
14Hibás válasz0/24ms416 KiB
15Hibás válasz0/24ms316 KiB
16Hibás válasz0/33ms316 KiB
17Időlimit túllépés0/2699ms1332 KiB
18Időlimit túllépés0/2699ms1332 KiB
19Időlimit túllépés0/4699ms1336 KiB
20Időlimit túllépés0/4688ms1332 KiB
21Időlimit túllépés0/4677ms1332 KiB
22Időlimit túllépés0/4679ms1592 KiB
23Időlimit túllépés0/4681ms1588 KiB