제출 #587457

#제출 시각아이디문제언어결과실행 시간메모리
587457gg123_peBest Place (NOI17_bestplace)C++14
100 / 100
85 ms4992 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define f(i,a,b) for(ll i = a; i < b; i++) const int N = 1e5 + 5; const ll inf = 2e18; ll n, a[N], b[N], A[N], B[N], sa[N], sb[N]; int main(){ cin >> n; f(i,1,n+1) { cin >> a[i] >> b[i]; A[i] = a[i], B[i] = b[i]; } ll ans = inf, x, y; sort(A+1, A+n+1); sort(B+1, B+n+1); f(i,1,n+1){ sa[i] = sa[i-1] + A[i]; sb[i] = sb[i-1] + B[i]; } /* f(i,1,n+1){ f(j,1,n+1){ ll res = 0; int l = upper_bound(A+1, A+n+2, a[i]) - A; int r = upper_bound(B+1, B+n+2, b[j]) - B; l--, r--; res += a[i] * l - sa[l] + (sa[n] - sa[l]) - a[i] * (n - l); res += b[j] * r - sb[r] + (sb[n] - sb[r]) - b[j] * (n - r); if(res < ans){ x = a[i], y = b[j]; ans = res; } } } */ ll le = n/2; f(i,max(1LL,le-5),min(n+1, le+5)){ f(j,max(1LL,le-5), min(n+1, le+5)){ ll res = 0; res += A[i] * i - sa[i] + (sa[n] - sa[i]) - A[i] * (n - i); res += B[j] * j - sb[j] + (sb[n] - sb[j]) - B[j] * (n - j); if(res < ans){ x = A[i], y = B[j]; ans = res; } } } cout << x << " " << y << "\n"; return 0; }
#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...