Submission #1288182

#TimeUsernameProblemLanguageResultExecution timeMemory
1288182gustavo_dPalembang Bridges (APIO15_bridge)C++20
0 / 100
7 ms584 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN = 1e5; const int INF = 1e9; const ll INFLL = 1e18; int k, n; int a[MAXN], b[MAXN]; ll ans = INFLL; vector<int> bridges; void solve() { ll res = 0; for (int i=0; i<n; i++) { int d = INF; for (int bridge : bridges) { d = min(d, abs(a[i] - bridge) + 1 + abs(b[i] - bridge)); } res += d; } ans = min(ans, res); } void rec(int toPut, int i) { if (toPut == 0) { solve(); return; } for (int j=i; j<2*n; j++) { bridges.push_back((j < n ? a[j] : b[j])); rec(toPut - 1, j+1); bridges.pop_back(); } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> k >> n; ll base = 0; for (int i=0; i<n; i++) { char side1, side2; cin >> side1 >> a[i] >> side2 >> b[i]; if (side1 == side2) { base += abs(b[i] - a[i]); n--; i--; continue; } if (a[i] > b[i]) swap(a[i], b[i]); } k = min(k, n); rec(k, 0); cout << base + ans << '\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...