226542026-01-15 13:40:25SpoonMekk Mester munkái (50 pont)cpp17Hibás válasz 0/50699ms2852 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <stack>

using namespace std;

struct munapok {
    int k;
    int v;
    int sorszam;
};

int n,H, M1=0,M2=0;
vector<munapok> munkak;
vector<int> mester;
vector<int> gyerek;

int comp(munapok a, munapok b) {
    return a.v<b.v;
}

void beolvas() {
    cin>>n>>H;
    munkak.push_back({0,0});
    mester.resize(H+1,0);
	gyerek.resize(H+1,0);
    for (int i = 1;i <=n;i++) {
        int nap1, nap2;
        cin>>nap1>>nap2;
        munkak.push_back({nap1,nap2,i});
    }
    sort(munkak.begin(), munkak.end(), comp);
}

void mekkmester() {
    int db=0;
    for (int i = 1;i <= n;i++) {
        if(db == 0) {
            if(gyerek[munkak[i].v]==0 && gyerek[munkak[i].k]==0) {
                int nemjo=0;
                for (int j = munkak[i].k; j <= munkak[i].v;j++) {
                    if(gyerek[j]!=0) nemjo++;
                }
                if(nemjo==0){
                    for (int j = munkak[i].k; j <= munkak[i].v ;j++) {
                        gyerek[j] = munkak[i].sorszam;
                    }
                    M2++;
                }
                else db=1;
            }
            else db=1;
        }
        if (db == 1) {
            if (mester[munkak[i].v] == 0 && mester[munkak[i].k] == 0) {
                int nemjo2 = 0;
                    for (int j = munkak[i].k; j <= munkak[i].v; j++) {
                        if (mester[j] != 0) nemjo2++;
                    }
                if (nemjo2 == 0) {
                    for (int j = munkak[i].k; j <= munkak[i].v;j++) {
                        mester[j] = munkak[i].sorszam;
                    }
                    M1++;
                }
                else db=2;
            }
            else db=2;
        }
        if (db == 2) {
            if (gyerek[munkak[i].v] == 0 && gyerek[munkak[i].k] == 0) {
                int nemjo3 = 0;
                for (int j = munkak[i].k; j <= munkak[i].v;j++) {
                    if (gyerek[j] != 0) nemjo3++;
                }
                if (nemjo3 == 0) {
                    for (int j = munkak[i].k; j <= munkak[i].v;j++) {
                        gyerek[j] = munkak[i].sorszam;
                    }
                    M2++;
                }
                else db = 1;
            }
            else db = 1;
        }
    }
}

void kiir() {
    cout<<M1<<" "<<M2<<endl;
    int uccso1=0,uccso2=0;
    for (int i = 1;i <= n;i++) {
        if (mester[i] != 0 && mester[i] != uccso2) {
            cout << mester[i] << " ";
            uccso2 = mester[i];
        }
    }
    cout<<endl;
    for (int i = 1;i <= n;i++) {
        if (gyerek[i] != 0 && gyerek[i]!=uccso1) {  
            cout<<gyerek[i]<<" ";
            uccso1=gyerek[i];
        }
    }
}


int main()
{
    beolvas();
    cout << endl;
    mekkmester();
    kiir();
    

    return 0;
}

RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Elfogadva0/01ms316 KiB
2Hibás válasz0/028ms564 KiB
3Hibás válasz0/14ms1076 KiB
4Hibás válasz0/14ms1076 KiB
5Hibás válasz0/24ms1076 KiB
6Hibás válasz0/24ms1076 KiB
7Hibás válasz0/23ms1076 KiB
8Hibás válasz0/23ms1116 KiB
9Hibás válasz0/31ms316 KiB
10Hibás válasz0/123ms1216 KiB
11Hibás válasz0/123ms1220 KiB
12Hibás válasz0/219ms1076 KiB
13Hibás válasz0/216ms1204 KiB
14Hibás válasz0/210ms1096 KiB
15Hibás válasz0/29ms1076 KiB
16Hibás válasz0/32ms500 KiB
17Időlimit túllépés0/2699ms2732 KiB
18Időlimit túllépés0/2699ms2672 KiB
19Időlimit túllépés0/4699ms2852 KiB
20Időlimit túllépés0/4699ms2848 KiB
21Időlimit túllépés0/4680ms2728 KiB
22Időlimit túllépés0/4699ms2732 KiB
23Hibás válasz0/4574ms2696 KiB