제출 #48190

#제출 시각아이디문제언어결과실행 시간메모리
48190E869120Palembang Bridges (APIO15_bridge)C++14
22 / 100
175 ms6968 KiB
#include <iostream> #include <cmath> #include <algorithm> #include <vector> using namespace std; long long N, K, Q, A[100009], B[100009], sum; vector<long long>Z; vector<long long>S; long long calculate() { long long rem = 0; for (int i = 1; i <= Q; i++) { long long F = (1LL << 60); for (int j = 0; j < S.size(); j++) { if (A[i] <= S[j] && S[j] <= B[i]) F = 0; F = min(F, 2LL * min(abs(A[i] - S[j]), abs(B[i] - S[j]))); } rem += F; } return sum + rem; } int main() { cin >> K >> N; for (int i = 1; i <= N; i++) { char a1, b1; long long a2, b2; cin >> a1 >> a2 >> b1 >> b2; if (a1 == b1) sum += abs(a2 - b2); else { Q++; if (a2 > b2) swap(a2, b2); A[Q] = a2; B[Q] = b2; sum += (b2 - a2 + 1); } } for (int i = 1; i <= Q; i++) { Z.push_back(A[i]); Z.push_back(B[i]); } sort(Z.begin(), Z.end()); if (Q == 0) { cout << sum << endl; return 0; } if (K == 1) { vector<long long>vec; for (int i = 1; i <= Q; i++) { vec.push_back(A[i]); vec.push_back(B[i]); } sort(vec.begin(), vec.end()); S = vector<long long>{ vec[vec.size() / 2] }; long long ans = calculate(); cout << ans << endl; } if (K == 2) { long long ans = (1LL << 60); for (int i = 0; i < Z.size(); i++) { vector<pair<long long, long long>>vec; long long R = 0; for (int j = 1; j <= Q; j++) { if (A[j] > Z[i]) { R += 2; vec.push_back(make_pair(A[j], 2)); vec.push_back(make_pair(B[j], 2)); vec.push_back(make_pair(B[j] + A[j] - Z[i], -2)); } } sort(vec.begin(), vec.end()); S = vector<long long>{ Z[i] }; long long D = calculate(), J = -R, cx = Z[i]; for (int j = 0; j < vec.size(); j++) { ans = min(ans, D); D += J*(vec[j].first - cx); J += vec[j].second; cx = vec[j].first; } } cout << ans << endl; } return 0; }

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

bridge.cpp: In function 'long long int calculate()':
bridge.cpp:14:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int j = 0; j < S.size(); j++) {
                   ~~^~~~~~~~~~
bridge.cpp: In function 'int main()':
bridge.cpp:52:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int i = 0; i < Z.size(); i++) {
                   ~~^~~~~~~~~~
bridge.cpp:59:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for (int j = 0; j < vec.size(); j++) {
                    ~~^~~~~~~~~~~~
#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...