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;
#define int long long
#define vi vector<int>
#define vvi vector<vi>
#define pii pair<int,int>
#define vpii vector<pii>
#define vvpii vector<vpii>
#define vb vector<bool>
#define vc vector<char>
#define vvc vector<vc>
#define vvb vector<vb>z
#define si set<int>
#define mii map<int,int>
const int mod=1e9+7;
const int N=2e5+1;
const int LN=LLONG_MAX/10;
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int k,n;
cin>>k>>n;
int ans=0;
vi P;
for(int i=0;i<n;i++){
char e1,e2;
int p1,p2;
cin>>e1>>p1>>e2>>p2;
if(e1==e2){
ans+=abs(p1-p2);
}
else{
P.push_back(p1);
P.push_back(p2);
}
}
int sol=LN;
sort(P.begin(),P.end());
vi ub;
for(int p=0;p<(int)P.size();p++){
if(p)ub.push_back(P[p]-(P[p]-P[p-1])/2);
if(p)ub.push_back(P[p]-(P[p]-P[p-1])/2-1);
ub.push_back(P[p]);
}
if(k==1){
int aft=P.size();
int sum=0;
for(int i : P)sum+=i;
int p=0;
int bef=0;
for(int i : ub){
//cout<<cA+cB<<endl;
sol=min(sol,sum);
while(p<(int)P.size() and P[p]==i){
aft--;
bef++;
p++;
}
sum+=bef;
sum-=aft;
}
//cout<<cA+cB<<endl;
sol=min(sol,sum);
}
else{
}
if(P.size()==0)sol=0;
std::cout<<ans+sol+P.size()/2;
}
# | 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... |