제출 #793933

#제출 시각아이디문제언어결과실행 시간메모리
793933PixelCat도시들 (IOI15_towns)C++14
25 / 100
16 ms1108 KiB
#ifdef NYAOWO
#include "grader.cpp"
#endif

#include "towns.h"

#include <bits/stdc++.h>
#define For(i, a, b) for(int i = a; i <= b; i++)
#define Forr(i, a, b) for(int i = a; i >= b; i--)
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define sz(x) ((int)x.size())
#define eb emplace_back
#define int LL
using namespace std;
using LL = long long;
using pii = pair<int, int>;

map<pii, int> mem;
int dist(int a, int b) {
    if(a > b) swap(a, b);
    pii p(a, b);
    if(mem.count(p)) return mem[p];
    mem[p] = getDistance((int32_t)a, (int32_t)b);
    return mem[p];
}

int32_t hubDistance(int32_t N, int32_t sub) {
    // remember to init!
    mem.clear();

    int dia = 0;
    int p1 = 0;
    For(i, 1, N - 1) {
        int d = dist(i, 0);
        if(d > dia) {
            dia = d;
            p1 = i;
        }
    }
    dia = 0;
    int p2 = p1;
    For(i, 0, N - 1) {
        int d = dist(p1, i);
        if(d > dia) {
            dia = d;
            p2 = i;
        }
    }

    map<int, int> cnt;
    For(i, 0, N - 1) if(i != p1 && i != p2) {
        int d1 = dist(p1, i);
        int d2 = dist(p2, i);
        cnt[(dia + d1 - d2) / 2]++;
    }
    
    int mn = dia;
    for(auto &i:cnt) {
        mn = min(mn, max(i.F, dia - i.F));
    }
    return (int32_t)mn;
}

컴파일 시 표준 에러 (stderr) 메시지

towns.cpp: In function 'int32_t hubDistance(int32_t, int32_t)':
towns.cpp:29:40: warning: unused parameter 'sub' [-Wunused-parameter]
   29 | int32_t hubDistance(int32_t N, int32_t sub) {
      |                                ~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...