#include <cmath>
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
using ll = long long;
ll mod = 1000000007;
ll modpow(ll a, ll b) {
ll result = 1;
a %= mod;
while (b > 0) {
if (b % 2 == 1)
result = (result * a) % mod;
a = (a * a) % mod;
b /= 2;
}
return result;
}
int main() {
ll k,n;
cin>>k>>n;
vector<ll> median;
vector<ll> home;
vector<ll> ofiice;
ll sum_distance =0;
if(k == 1){
for (ll z = 0; z < n; z++) {
string s;
cin>>s;
char p = s[0];
ll S = 0;
ll i = 1;
while (isdigit(s[i])) {
S = S * 10 + (s[i] - '0');
i++;
}
char q = s[i];
ll T = 0;
i++;
while (i < s.size()) {
T = T * 10 + (s[i] - '0');
i++;
}
if(p == q){
sum_distance += llabs(S - T);
}
else{
int mid = (S + T )/2;
median.push_back(mid);
home.push_back(S);
ofiice.push_back(T);
}
}
if (median.size() == 0) {
cout << sum_distance << endl;
return 0;
}
ll j = median.size();
sort(median.begin(), median.end());
ll sum = j/2;
ll pos = 0;
pos = median[sum];
ll ans = sum_distance;
for (int i = 0; i < home.size(); i++)
{
ans += (llabs(home[i] - pos ) + llabs(ofiice[i] - pos)) +1;
}
cout<<ans<<endl;
}
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... |