242762026-02-07 19:49:18AkosVagyokEmborMekk Mester munkái (50 pont)cpp17Elfogadva 50/5086ms2748 KiB
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct vekkVester {
    int x;
    int y;
    int index;
};
bool cmp(vekkVester a, vekkVester b) {
    return a.y < b.y;
}
vector <vekkVester> veki, boyt, mastert;
int n, napok;
void be() {
    cin >> n>>napok;
    veki.resize(n + 1);
    for (int i = 1; i <= n; i++) {
        cin >> veki[i].x >> veki[i].y;
        veki[i].index = i;
    }
    sort(veki.begin(), veki.end(), cmp);
}
void ki() {
    cout << endl << endl;
    for (int i = 1; i <= n; i++) {
        cout << veki[i].x << ' ' << veki[i].y << endl;
    }
}
void boy(vekkVester nap) {
    boyt.push_back(nap);
}
void master(vekkVester nap) {
    mastert.push_back(nap);
}
void fBig(int i=1, bool akt=1) {
    if (i <= n) {
        if (i == 1) {
            master(veki[i]);
            fBig(i+1, 1);
        }
        else {
            if (akt) {
                if (veki[i].x>mastert.back().y) {
                    master(veki[i]);
                    fBig(i + 1, 1);
                }
                else {
                    if (boyt.empty()||veki[i].x > boyt.back().y) {
                        boy(veki[i]);
                        fBig(i + 1, 0);
                    }
                    else {
                        fBig(i+1, 1);
                    }
                }
            }
            else {
                if (veki[i].x > boyt.back().y) {
                    boy(veki[i]);
                    fBig(i + 1, 0);
                }
                else {
                    if (veki[i].x > mastert.back().y) {
                        master(veki[i]);
                        fBig(i + 1, 1);
                    }
                    else {
                        fBig(i + 1, 0);
                    }
                }
            }
        }
    }
}


int main()
{
    be();
    //ki();
    fBig();
    cout << boyt.size() << ' '<< mastert.size()<<endl;
    for (int i = 0; i < boyt.size(); i++) {
        cout << boyt[i].index << ' ';
    }
    cout << endl;
    for (int i = 0; i < mastert.size(); i++) {
        cout << mastert[i].index << ' ';
    }

}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/07ms316 KiB
3Elfogadva1/11ms316 KiB
4Elfogadva1/11ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms392 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva1/12ms316 KiB
11Elfogadva1/12ms316 KiB
12Elfogadva2/22ms316 KiB
13Elfogadva2/22ms316 KiB
14Elfogadva2/22ms316 KiB
15Elfogadva2/22ms316 KiB
16Elfogadva3/32ms500 KiB
17Elfogadva2/279ms1592 KiB
18Elfogadva2/278ms1588 KiB
19Elfogadva4/478ms1580 KiB
20Elfogadva4/478ms1580 KiB
21Elfogadva4/479ms1588 KiB
22Elfogadva4/479ms1844 KiB
23Elfogadva4/486ms2748 KiB