제출 #35268

#제출 시각아이디문제언어결과실행 시간메모리
35268cheater2kPalembang Bridges (APIO15_bridge)C++14
22 / 100
49 ms4536 KiB
#include <bits/stdc++.h> using namespace std; const int N = 100005; int k, n; int sz; long long ans; pair<int,int> a[N]; vector<int> z; void solve1() { if (n == 0) return; int med = z[z.size() / 2]; for (int i = 0; i < z.size(); ++i) { ans += abs(med - z[i]); } } long long calc(int x, int y) { long long res = 0; for (int i = 1; i <= n; ++i) { int dx = abs(x - a[i].first) + abs(x - a[i].second); int dy = abs(y - a[i].first) + abs(y - a[i].second); res += min(dx, dy); } return res; } void solve2() { if (n == 0) return; int pt = 1; long long res = 1e18; for (int i = 0; i < z.size() - 1; ++i) { while(pt < (int)z.size() - 1 && calc(z[i], z[pt]) > calc(z[i], z[pt + 1])) ++pt; res = min(res, calc(z[i], z[pt])); } ans += res; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin >> k >> n; for (int i = 1; i <= n; ++i) { char p, q; int s, t; cin >> p >> s >> q >> t; if (p == q) ans += abs(s - t); else ++sz, a[sz] = make_pair(min(s, t), max(s, t)); } n = sz; for (int i = 1; i <= n; ++i) { z.push_back(a[i].first); z.push_back(a[i].second); } sort(z.begin(), z.end()); ans += n; if (k == 1) solve1(); else solve2(); printf("%lld\n", ans); }

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

bridge.cpp: In function 'void solve1()':
bridge.cpp:15:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < z.size(); ++i) {
                    ^
bridge.cpp: In function 'void solve2()':
bridge.cpp:34:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < z.size() - 1; ++i) {
                    ^
#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...