# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
56621 | 2018-07-12T03:32:32 Z | leejseo | Palembang Bridges (APIO15_bridge) | C++ | 973 ms | 6212 KB |
#include <bits/stdc++.h> using namespace std; int K, N; void solve1(){ long long ans = 0; vector<int> L; int u, v; char x, y; for(int i=0; i<N; i++){ scanf("%c %d %c %d\n", &x, &u, &y, &v); if (x == y) ans += abs(u-v); else{ L.push_back(u); L.push_back(v); } } sort(L.begin(), L.end()); int M = L.size(); if (M == 0){ printf("%lld\n", ans); return; } long long mid = L[M/2]; for (int i=0; i<M; i++) ans += abs(L[i] - mid); ans += M/2; printf("%lld\n", ans); L.clear(); return; } long long f(vector<int>&X, vector<int>&Y, int s){ vector<int> lo, hi; int N = X.size(); for (int i=0; i<N; i++){ if (X[i] + Y[i] < s){ lo.push_back(X[i]); lo.push_back(Y[i]); } else{ hi.push_back(X[i]); hi.push_back(Y[i]); } } long long ans = 0LL; sort(lo.begin(), lo.end()); sort(hi.begin(), hi.end()); for (int i=0; i<N; i++){ if (X[i] + Y[i] < s) ans += abs(X[i]-lo[lo.size()/2])+abs(Y[i]-lo[lo.size()/2]); else ans += abs(X[i]-hi[hi.size()/2])+abs(Y[i]-hi[hi.size()/2]); } lo.clear(); hi.clear(); return ans; } void solve2(){ long long ans = 0; vector<int> S; vector<int> X; vector<int> Y; int u, v; char x, y; for(int i=0; i<N; i++){ scanf("%c %d %c %d\n", &x, &u, &y, &v); if (x == y) ans += abs(u-v); else{ S.push_back(u+v); X.push_back(u); Y.push_back(v); } } int M = X.size(); if (M == 0){ printf("%lld\n", ans); return; } sort(S.begin(), S.end()); unique(S.begin(), S.end()); int lo = 0, hi = S.size()-1; long long temp = 1LL << 61; if (hi <= 2000){ for (int i=lo; i<=hi; i++){ temp = min(temp, f(X, Y, S[i])); } } else{ while (lo + 10 < hi){ int llh = (lo + lo + hi)/3; int lhh = (lo + hi + hi + 1)/3; long long left = f(X, Y, S[llh]), right = f(X, Y, S[lhh]); if (left < right) hi = lhh - 1; else if (left == right){ lo = llh; hi = lhh; } else lo = llh+1; } for (int i=lo; i<=hi; i++){ temp = min(temp, f(X, Y, S[i])); } } ans += temp; ans += M; printf("%lld\n", ans); return; } int main(void){ scanf("%d%d\n", &K, &N); if (K == 1) solve1(); else solve2(); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 376 KB | Output is correct |
3 | Correct | 3 ms | 564 KB | Output is correct |
4 | Correct | 2 ms | 564 KB | Output is correct |
5 | Correct | 2 ms | 564 KB | Output is correct |
6 | Correct | 2 ms | 564 KB | Output is correct |
7 | Correct | 3 ms | 564 KB | Output is correct |
8 | Correct | 2 ms | 584 KB | Output is correct |
9 | Correct | 3 ms | 592 KB | Output is correct |
10 | Correct | 3 ms | 592 KB | Output is correct |
11 | Correct | 3 ms | 720 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 720 KB | Output is correct |
2 | Correct | 2 ms | 720 KB | Output is correct |
3 | Correct | 2 ms | 720 KB | Output is correct |
4 | Correct | 3 ms | 720 KB | Output is correct |
5 | Correct | 3 ms | 720 KB | Output is correct |
6 | Correct | 3 ms | 720 KB | Output is correct |
7 | Correct | 3 ms | 720 KB | Output is correct |
8 | Correct | 4 ms | 720 KB | Output is correct |
9 | Correct | 3 ms | 720 KB | Output is correct |
10 | Correct | 3 ms | 744 KB | Output is correct |
11 | Correct | 2 ms | 744 KB | Output is correct |
12 | Correct | 31 ms | 1780 KB | Output is correct |
13 | Correct | 74 ms | 1796 KB | Output is correct |
14 | Correct | 53 ms | 1796 KB | Output is correct |
15 | Correct | 43 ms | 1796 KB | Output is correct |
16 | Correct | 37 ms | 1796 KB | Output is correct |
17 | Correct | 80 ms | 1872 KB | Output is correct |
18 | Correct | 84 ms | 1872 KB | Output is correct |
19 | Correct | 76 ms | 1872 KB | Output is correct |
20 | Correct | 48 ms | 1872 KB | Output is correct |
21 | Correct | 56 ms | 1872 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 1872 KB | Output is correct |
2 | Correct | 2 ms | 1872 KB | Output is correct |
3 | Correct | 3 ms | 1872 KB | Output is correct |
4 | Correct | 3 ms | 1872 KB | Output is correct |
5 | Correct | 3 ms | 1872 KB | Output is correct |
6 | Correct | 2 ms | 1872 KB | Output is correct |
7 | Correct | 2 ms | 1872 KB | Output is correct |
8 | Correct | 2 ms | 1872 KB | Output is correct |
9 | Correct | 3 ms | 1872 KB | Output is correct |
10 | Correct | 3 ms | 1872 KB | Output is correct |
11 | Correct | 3 ms | 1872 KB | Output is correct |
12 | Correct | 2 ms | 1872 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 1872 KB | Output is correct |
2 | Correct | 2 ms | 1872 KB | Output is correct |
3 | Correct | 3 ms | 1872 KB | Output is correct |
4 | Correct | 3 ms | 1872 KB | Output is correct |
5 | Correct | 3 ms | 1872 KB | Output is correct |
6 | Correct | 2 ms | 1872 KB | Output is correct |
7 | Correct | 3 ms | 1872 KB | Output is correct |
8 | Correct | 4 ms | 1872 KB | Output is correct |
9 | Correct | 3 ms | 1872 KB | Output is correct |
10 | Correct | 3 ms | 1872 KB | Output is correct |
11 | Correct | 2 ms | 1872 KB | Output is correct |
12 | Correct | 3 ms | 1872 KB | Output is correct |
13 | Correct | 35 ms | 1872 KB | Output is correct |
14 | Correct | 103 ms | 1872 KB | Output is correct |
15 | Correct | 128 ms | 1872 KB | Output is correct |
16 | Correct | 5 ms | 1872 KB | Output is correct |
17 | Correct | 31 ms | 1872 KB | Output is correct |
18 | Correct | 17 ms | 1872 KB | Output is correct |
19 | Correct | 32 ms | 1872 KB | Output is correct |
20 | Correct | 43 ms | 1872 KB | Output is correct |
21 | Correct | 84 ms | 1872 KB | Output is correct |
22 | Correct | 109 ms | 1872 KB | Output is correct |
23 | Correct | 42 ms | 1872 KB | Output is correct |
24 | Correct | 95 ms | 1872 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 1872 KB | Output is correct |
2 | Correct | 3 ms | 1872 KB | Output is correct |
3 | Correct | 2 ms | 1872 KB | Output is correct |
4 | Correct | 4 ms | 1872 KB | Output is correct |
5 | Correct | 3 ms | 1872 KB | Output is correct |
6 | Correct | 3 ms | 1872 KB | Output is correct |
7 | Correct | 3 ms | 1872 KB | Output is correct |
8 | Correct | 2 ms | 1872 KB | Output is correct |
9 | Correct | 2 ms | 1872 KB | Output is correct |
10 | Correct | 4 ms | 1872 KB | Output is correct |
11 | Correct | 3 ms | 1872 KB | Output is correct |
12 | Correct | 4 ms | 1872 KB | Output is correct |
13 | Correct | 31 ms | 1872 KB | Output is correct |
14 | Correct | 109 ms | 1872 KB | Output is correct |
15 | Correct | 129 ms | 1872 KB | Output is correct |
16 | Correct | 6 ms | 1872 KB | Output is correct |
17 | Correct | 34 ms | 1872 KB | Output is correct |
18 | Correct | 17 ms | 1872 KB | Output is correct |
19 | Correct | 35 ms | 1872 KB | Output is correct |
20 | Correct | 67 ms | 1872 KB | Output is correct |
21 | Correct | 75 ms | 1872 KB | Output is correct |
22 | Correct | 109 ms | 1872 KB | Output is correct |
23 | Correct | 35 ms | 1872 KB | Output is correct |
24 | Correct | 114 ms | 1872 KB | Output is correct |
25 | Correct | 224 ms | 3528 KB | Output is correct |
26 | Correct | 484 ms | 4724 KB | Output is correct |
27 | Incorrect | 973 ms | 6212 KB | Output isn't correct |
28 | Halted | 0 ms | 0 KB | - |