3164 2023. 02. 21 11:53:51 TuruTamas Hírvivők csoportosítása (40) cpp17 Elfogadva 40/40 17ms 4344 KiB
#include <bits/stdc++.h>
using namespace std;

int N, M, H, K;
vector<bool> been;
vector<pair<int, int>> hirek;

void dfs(int& d, int loc) {
    been[loc] = true;
    for (size_t i = 0; i < hirek.size(); i++)
    {
        if (i == loc || been[i]) continue;
        if (abs(hirek[i].first - hirek[loc].first) + abs(hirek[i].second - hirek[loc].second) <= d) dfs(d, i);
    }
}

void getGroups(int& csoportok, int n) {
    csoportok = 0;
    been.assign(H, false);
    for (size_t i = 0; i < H; i++)
    {
        if (been[i]) continue;
        csoportok++;
        dfs(n, i);
    }
}

int main() {
    cin.tie(0); ios::sync_with_stdio(0);
    cin >> N >> M >> H >> K;
    int x, y;
    for (size_t i = 0; i < H; i++)
    {
        cin >> x >> y;
        hirek.push_back({x, y});
    }
    int csoportok, minn = 0, maxn = N+M, n = log2(N+M);
    int lastn = n;
    while (true) {
        int csoportok;
        getGroups(csoportok, n);
        if (csoportok > K) {
            minn = n;
            n = (n+maxn)/2;
        }
        else if (csoportok <= K) {
            maxn = n;
            n = (n+minn)/2;
        }
        if (n == lastn) break;
        lastn = n;
    }
    if (csoportok <= K) {
        cout << n;
    }
    else {
        while (csoportok > K) {
            n++;
            getGroups(csoportok, n);
        }
        cout << n;
    }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 40/40
1 Elfogadva 0/0 3ms 1764 KiB
2 Elfogadva 0/0 14ms 2160 KiB
3 Elfogadva 1/1 3ms 2480 KiB
4 Elfogadva 1/1 3ms 2552 KiB
5 Elfogadva 1/1 4ms 2664 KiB
6 Elfogadva 1/1 4ms 2872 KiB
7 Elfogadva 1/1 3ms 2948 KiB
8 Elfogadva 1/1 3ms 3076 KiB
9 Elfogadva 1/1 3ms 3024 KiB
10 Elfogadva 1/1 6ms 3260 KiB
11 Elfogadva 1/1 4ms 3472 KiB
12 Elfogadva 1/1 4ms 3440 KiB
13 Elfogadva 3/3 16ms 3468 KiB
14 Elfogadva 3/3 16ms 3784 KiB
15 Elfogadva 3/3 17ms 4008 KiB
16 Elfogadva 3/3 17ms 4208 KiB
17 Elfogadva 3/3 17ms 4152 KiB
18 Elfogadva 3/3 16ms 4276 KiB
19 Elfogadva 3/3 17ms 4036 KiB
20 Elfogadva 3/3 17ms 4288 KiB
21 Elfogadva 3/3 16ms 4344 KiB
22 Elfogadva 3/3 16ms 4240 KiB