219302026-01-14 10:37:44badamTalálkozáscpp17Time limit exceeded 4/55300ms1860 KiB
#include <iostream>
#include <vector>

using namespace std;

struct ember {
    int erkezes, tavozas;
};

bool benne_van(int a, int b, int c, int d) {
    return (max(a, c) <= min(b, d));
}

int main() {
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    int n;
    cin >> n;
    vector<ember> t(n);

    int kezdetiidopont = 2000000;
    int vegsoidopont = 0;

    for(int i=0; i<n; i++) {
        cin >> t[i].erkezes >> t[i].tavozas;
        if(t[i].erkezes < kezdetiidopont) kezdetiidopont = t[i].erkezes;
        if(t[i].tavozas > vegsoidopont) vegsoidopont = t[i].tavozas;
    }

    vector<int> v;
    for(int i=kezdetiidopont; i<=vegsoidopont; i++) v.push_back(i);

    int min_hossz = 2000000;
    int min_kezdet = -1;
    int min_veg = -1;
    bool tudtunk_varni = true;

    while(tudtunk_varni && !v.empty())
    {
        tudtunk_varni = false;

        int akt_kezdet = v.front();
        int akt_veg = v.back();
        int szamlalo = 0;
        for(int i=0; i<n; i++) {
            if(benne_van(t[i].erkezes, t[i].tavozas, akt_kezdet, akt_veg)) {
                szamlalo++;
            }
        }
        if(szamlalo >= (n+1)/2) {
            if((int)v.size() < min_hossz) {
                min_hossz = v.size();
                min_kezdet = akt_kezdet;
                min_veg = akt_veg;
            }
        } else {

            break;
        }
        if(v.size() > 1) {
            int proba_kezdet = *(v.begin() + 1);
            int proba_szamlalo = 0;
            for(int i=0; i<n; i++) {
                if(benne_van(t[i].erkezes, t[i].tavozas, proba_kezdet, akt_veg)) {
                    proba_szamlalo++;
                }
            }
            if(proba_szamlalo >= (n+1)/2) {
                v.erase(v.begin());
                tudtunk_varni = true;
                continue;
            }
        }
        if(v.size() > 1) {
            int proba_veg = *(v.end() - 2);
            int proba_szamlalo = 0;

            for(int i=0; i<n; i++) {
                if(benne_van(t[i].erkezes, t[i].tavozas, akt_kezdet, proba_veg)) {
                    proba_szamlalo++;
                }
            }

            if(proba_szamlalo >= (n+1)/2) {
                v.pop_back();
                tudtunk_varni = true;
                continue;
            }
        }
    }

    cout << min_hossz << endl;
    cout << min_kezdet << " " << min_veg << endl;

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base4/55
1Accepted0/01ms508 KiB
2Time limit exceeded0/0284ms1716 KiB
3Partially correct1/21ms316 KiB
4Partially correct1/21ms316 KiB
5Accepted2/21ms316 KiB
6Wrong answer0/23ms316 KiB
7Wrong answer0/24ms316 KiB
8Wrong answer0/32ms476 KiB
9Wrong answer0/37ms316 KiB
10Wrong answer0/38ms316 KiB
11Time limit exceeded0/3300ms728 KiB
12Time limit exceeded0/3300ms752 KiB
13Time limit exceeded0/3300ms820 KiB
14Time limit exceeded0/3286ms820 KiB
15Time limit exceeded0/3282ms820 KiB
16Time limit exceeded0/3300ms820 KiB
17Time limit exceeded0/3300ms824 KiB
18Time limit exceeded0/3282ms1204 KiB
19Time limit exceeded0/3289ms1716 KiB
20Time limit exceeded0/3300ms1856 KiB
21Time limit exceeded0/3300ms1860 KiB
22Time limit exceeded0/3284ms1716 KiB