This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ios::sync_with_stdio(false); cin.tie(nullptr);
int K, n;
cin >> K >> n;
ll sm = 0;
vector<vector<int>> v;
for (int i = 0; i < n; i++) {
char p, q;
int s, t;
cin >> p >> s >> q >> t;
if (s > t) swap(s, t);
if (p == q) sm += t - s;
else v.push_back({s + t, s, t});
}
sm += (int)v.size();
sort(v.begin(), v.end());
if (K == 1) {
vector<int> u;
for (auto i : v) u.insert(u.end(), {i[1], i[2]});
sort(u.begin(), u.end());
for (int j = 0; j < (int)u.size(); j++) sm += (j < (int)u.size() >> 1 ? -1 : 1) * u[j];
return cout << sm, 0;
}
ll mn = LLONG_MAX;
for (int i = 0; i < (int)v.size(); i++) {
vector<int> u1, u2;
for (int j = 0; j < (int)v.size(); j++) (j <= i ? u1 : u2).insert((j <= i ? u1 : u2).end(), {v[j][1], v[j][2]});
sort(u1.begin(), u1.end());
sort(u2.begin(), u2.end());
ll sm = 0;
for (int j = 0; j < (int)u1.size(); j++) sm += (j < (int)u1.size() >> 1 ? -1 : 1) * u1[j];
for (int j = 0; j < (int)u2.size(); j++) sm += (j < (int)u2.size() >> 1 ? -1 : 1) * u2[j];
mn = min(mn, sm);
}
cout << sm + mn;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |