이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define AzizIO ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define all(v) ((v).begin()), ((v).end())
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define sz(v) ((int)(v).size())
#define endl '\n'
#define ull unsigned long long
#define ll long long
#define ld long double
#define MAX (((int)2e6) + 5)
#define mod (((int)1e9) + 7)
bool cmp(pair<int, int> x, pair<int, int> y) {
return (x.fi + x.se < y.fi + y.se);
}
priority_queue<int> lpq;
priority_queue<int, vector<int>, greater<>> rpq;
ll lsum, rsum;
void insert(int x) {
int med = sz(lpq)? lpq.top(): 1000000001;
if (x <= med) {
lpq.push(x);
lsum += x;
} else {
rpq.push(x);
rsum += x;
}
if (sz(lpq) > sz(rpq) + 1) {
int nxt = lpq.top();
lpq.pop();
lsum -= nxt;
rpq.push(nxt);
rsum += nxt;
} else if (sz(lpq) < sz(rpq)) {
int nxt = rpq.top();
rpq.pop();
rsum -= nxt;
lpq.push(nxt);
lsum += nxt;
}
}
void solve() {
int k, n;
cin >> k >> n;
vector< int > pref(n + 1);
vector< pair<int, int> > v = {{0, 0}};
ll same_side = 0, ans = 0;
for (int i = 0; i < n; ++i) {
int x, y;
char a, b;
cin >> a >> x >> b >> y;
if (a == b) same_side += abs(x - y);
else v.push_back({x, y});
}
sort(v.begin(), v.end(), cmp);
n = sz(v) - 1;
same_side += n;
for (int i = 1; i <= n; ++i) {
insert(v[i].fi);
insert(v[i].se);
pref[i] = rsum - lsum;
}
ans = pref[n];
if (k == 2) {
while (sz(lpq)) lpq.pop();
while (sz(rpq)) rpq.pop();
rsum = lsum = 0;
for (int i = n; i; --i) {
insert(v[i].fi);
insert(v[i].se);
ans = min(ans, rsum - lsum + pref[i - 1]);
}
}
cout << ans + same_side << endl;
}
int main() {
AzizIO
//#ifndef ONLINE_JUDGE
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
//#endif
int T = 1;
// cin >> T;
while (T--) {
solve();
}
return 0;
}
# | 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... |