228842026-01-16 07:11:17SpoonMekk Mester munkái (50 pont)cpp17Hibás válasz 3/50688ms2624 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.resize(n+1);
    mester.resize(H+1,0);
	gyerek.resize(H+1,0);
    for (int i = 1;i <=n;i++) {
        cin >> munkak[i].k >> munkak[i].v;
        munkak[i].sorszam = 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++;
                    db = 0;
                }
                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();
    mekkmester();
    kiir();
    

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base3/50
1Elfogadva0/01ms568 KiB
2Hibás válasz0/027ms564 KiB
3Hibás válasz0/14ms1076 KiB
4Hibás válasz0/13ms1076 KiB
5Hibás válasz0/24ms1076 KiB
6Hibás válasz0/24ms1076 KiB
7Hibás válasz0/23ms1080 KiB
8Hibás válasz0/22ms1076 KiB
9Elfogadva3/31ms316 KiB
10Hibás válasz0/121ms1212 KiB
11Hibás válasz0/123ms1204 KiB
12Hibás válasz0/219ms1076 KiB
13Hibás válasz0/214ms1076 KiB
14Hibás válasz0/29ms1412 KiB
15Hibás válasz0/29ms1076 KiB
16Hibás válasz0/32ms500 KiB
17Időlimit túllépés0/2683ms2356 KiB
18Időlimit túllépés0/2680ms2356 KiB
19Időlimit túllépés0/4677ms2356 KiB
20Időlimit túllépés0/4685ms2356 KiB
21Időlimit túllépés0/4688ms2356 KiB
22Időlimit túllépés0/4681ms2356 KiB
23Hibás válasz0/4527ms2624 KiB