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;
const int maxn=100000+10;
long long n,k,fakeres,ps[maxn],suf[maxn];
vector<pair<long long,long long>>all;
bool cmp(pair<long long,long long>a,pair<long long,long long>b){
return a.first+a.second<b.first+b.second;
}
void vorod(){
cin>>k>>n;
for(long long i=0;i<n;i++){
char c,cc;
long long d,dd;
cin>>c>>d>>cc>>dd;
if(d>dd){
swap(d,dd);
}
if(c==cc){
fakeres+=abs(dd-d);
}else{
all.push_back(make_pair(d,dd));
fakeres++;
}
}
n=(long long)all.size();
}
priority_queue<long long>kam,ziad;
long long sumkam=0,sumziad=0;
void ins(int w){
sumkam+=w;
kam.push(w);
while((int)kam.size()>(int)ziad.size()||kam.top()>-ziad.top()){
sumkam-=kam.top();
sumziad+=kam.top();
ziad.push(-kam.top());
kam.pop();
}
while((int)kam.size()<(int)ziad.size()||kam.top()>-ziad.top()){
sumkam+=-ziad.top();
sumziad-=-ziad.top();
kam.push(-ziad.top());
ziad.pop();
}
while((int)kam.size()>(int)ziad.size()||kam.top()>-ziad.top()){
sumkam-=kam.top();
sumziad+=kam.top();
ziad.push(-kam.top());
kam.pop();
}
while((int)kam.size()<(int)ziad.size()||kam.top()>-ziad.top()){
sumkam+=-ziad.top();
sumziad-=-ziad.top();
kam.push(-ziad.top());
ziad.pop();
}
}
void pre(){
sort(all.begin(),all.end(),cmp);
for(long long i=0;i<n;i++){
ins(all[i].first);
ins(all[i].second);
ps[i]=sumziad-sumkam;
}
while((long long)kam.size()>0){
kam.pop();
ziad.pop();
}
sumkam=0,sumziad=0;
for(long long i=n-1;i>=0;i--){
ins(all[i].first);
ins(all[i].second);
suf[i]=sumziad-sumkam;
}
}
void solve(){
if(k==1){
long long mainres=fakeres+ps[n-1];
cout<<mainres<<"\n";
return ;
}
long long mainres=fakeres+suf[0];
for(long long i=0;i<n;i++){
mainres=min(mainres,fakeres+suf[i+1]+ps[i]);
}
cout<<mainres<<"\n";
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
//freopen("inp.txt","r",stdin);
vorod();
pre();
solve();
}
# | 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... |