34452023-02-27 22:32:33norbertvidaTalálkozáscpp17Időlimit túllépés 52/55259ms6820 KiB
#include <bits/stdc++.h>

using namespace std;

struct ip {
    int mikor;
    bool jott;
};

int main() {
    iostream::sync_with_stdio(0);
    cin.tie(0);
    int N;
    cin >> N;
    int fel = (N >> 1) + (N & 1);
    vector<ip> idopontok(N * 2);
    for(int i = 0; i < N; i++) {
        cin >> idopontok[i * 2].mikor >> idopontok[i * 2 + 1].mikor;
        idopontok[i * 2].jott = true;
        idopontok[i * 2 + 1].jott = false;
    }
    sort(idopontok.begin(), idopontok.end(), [](const ip &a, const ip &b) -> bool {
        return a.mikor == b.mikor ? a.jott : a.mikor < b.mikor;
    });
    int kezd = 0, veg = 0, hossz = 0, jelen = 0, u = 0, v = -1, opt_kezd = -1, opt_veg = -1, opt_hossz = 1e9;
    while(v < 2 * N) {
        while(jelen < fel && v < 2 * N) {
            v++;
            if(v == 2 * N) break;
            if(idopontok[v].jott) jelen++;
        }
        if(v == 2 * N) break;
        while(idopontok[u].jott && u < v) u++;
        kezd = idopontok[u].mikor;
        veg = idopontok[v].mikor;
        hossz = veg - kezd;
        if(hossz < opt_hossz) {
            opt_hossz = hossz;
            opt_kezd = kezd;
            opt_veg = veg;
        }
        u++;
        jelen--;
    }
    cout << opt_hossz + 1 << "\n" << opt_kezd << " " << opt_veg << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base52/55
1Elfogadva0/03ms1828 KiB
2Elfogadva0/043ms5076 KiB
3Elfogadva2/23ms2400 KiB
4Elfogadva2/23ms2472 KiB
5Elfogadva2/23ms2692 KiB
6Elfogadva2/23ms2904 KiB
7Elfogadva2/23ms3112 KiB
8Elfogadva3/33ms3120 KiB
9Elfogadva3/33ms3316 KiB
10Elfogadva3/33ms3188 KiB
11Elfogadva3/34ms3408 KiB
12Elfogadva3/36ms3452 KiB
13Elfogadva3/36ms3780 KiB
14Elfogadva3/38ms4116 KiB
15Elfogadva3/38ms4008 KiB
16Elfogadva3/38ms4008 KiB
17Elfogadva3/38ms4328 KiB
18Elfogadva3/313ms4608 KiB
19Elfogadva3/332ms6816 KiB
20Időlimit túllépés0/3259ms4660 KiB
21Elfogadva3/343ms6820 KiB
22Elfogadva3/343ms6816 KiB