Submission #1295112

#TimeUsernameProblemLanguageResultExecution timeMemory
1295112picradPalembang Bridges (APIO15_bridge)C++20
0 / 100
1 ms572 KiB
#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
using namespace std;
typedef long long ll;
typedef double dbl;
typedef pair<ll,ll> pii;
 
const int maxn = 1e5+5;
ll K,N,sum,cnt = 1e9+5,a,b,asum;
char c,d;
vector<pii> swp;

int main(){
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> K >> N;
  int temp = 0;
  for(int i =1; i <= N;i++){
    cin >> c >> a >> d >> b;
    sum += abs(a-b);
    if(c == d){
      temp++;
      continue;
    }
    asum += a;
    if(a > b)swap(a,b);
    swp.pb({a,0});
    swp.pb({b,1});
  }
  sort(swp.begin(),swp.end());
  ll l = 0, r = asum,posl = 0,posr = N-temp,i = 0,prv = 0;
  pii cur;
  while(i < swp.size()){
    cur = swp[i];
    r -= (cur.fi-prv)*posr;
    l += (cur.fi-prv)*posl;
    cnt = min(cnt,l+r);
    //cout << "DIST: " << cur.fi << "-" << prv << endl <<  cnt << " " << l  << " " <<  r  << endl;
    if(cur.se == 0)posr--;
    else posl++;
    while(i+1 < swp.size() && swp[i+1].fi == cur.fi){
      if(swp[i+1].se == 0)posr--;
      else posl++;
      i++;
    }
    i++;
    prv = cur.fi;
  }
  cout << sum + cnt*2 + N - temp<< endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...