Submission #617908

#TimeUsernameProblemLanguageResultExecution timeMemory
617908snasibov05Palembang Bridges (APIO15_bridge)C++14
22 / 100
114 ms7480 KiB
#include <bits/stdc++.h> using namespace std; #define oo 1000000000000000000ll #define int long long struct data{ char t1, t2; int x1, x2; }; signed main() { int k, n; cin >> k >> n; if (k == 1){ int ans = 0; vector<int> arr; for (int i = 0; i < n; ++i){ char t1, t2; int x1, x2; cin >> t1 >> x1 >> t2 >> x2; if (t1 == t2) ans += abs(x2 - x1); else arr.push_back(x1), arr.push_back(x2); } if (arr.size() == 0){ cout << ans << "\n"; return 0; } sort(arr.begin(), arr.end()); vector<int> pref(arr.size()); pref[0] = arr[0]; for (int i = 1; i < arr.size(); ++i) pref[i] = pref[i-1] + arr[i]; vector<int> suf(arr.size()); suf.back() = arr.back(); for (int i = arr.size() - 2; i >= 0; --i) suf[i] = suf[i+1] + arr[i]; int mn = oo; for (int i = 0; i < arr.size(); ++i){ mn = min(mn, arr[i] * (i+1) - pref[i] + suf[i] - arr[i] * ((int)arr.size() - i)); } ans += (int)arr.size() / 2ll; ans += mn; cout << ans << "\n"; } else{ vector<int> arr; vector<data> v(n); for (int i = 0; i < n; ++i){ char t1, t2; int x1, x2; cin >> t1 >> x1 >> t2 >> x2; v[i] = {t1, t2, x1, x2}; if (t1 != t2) arr.push_back(x1), arr.push_back(x2); } int ans = oo; for (int i = 0; i < arr.size(); ++i){ for (int j = i+1; j < arr.size(); ++j){ int cur = 0; for (int x = 0; x < n; ++x){ if (v[x].t1 == v[x].t2) cur += abs(v[x].x1 - v[x].x2); else{ int c = abs(v[x].x1 - arr[i]) + abs(v[x].x2 - arr[i]) + 1; c = min(c, abs(v[x].x1 - arr[j]) + abs(v[x].x2 - arr[j]) + 1); cur += c; } } ans = min(ans, cur); } } cout << ans << "\n"; } return 0; }

Compilation message (stderr)

bridge.cpp: In function 'int main()':
bridge.cpp:32:27: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |         for (int i = 1; i < arr.size(); ++i) pref[i] = pref[i-1] + arr[i];
      |                         ~~^~~~~~~~~~~~
bridge.cpp:37:27: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |         for (int i = 0; i < arr.size(); ++i){
      |                         ~~^~~~~~~~~~~~
bridge.cpp:55:27: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   55 |         for (int i = 0; i < arr.size(); ++i){
      |                         ~~^~~~~~~~~~~~
bridge.cpp:56:33: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   56 |             for (int j = i+1; j < arr.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...