Submission #640927

#TimeUsernameProblemLanguageResultExecution timeMemory
640927andecaandeciPalembang Bridges (APIO15_bridge)C++17
31 / 100
41 ms3792 KiB
#include <bits/stdc++.h>
using namespace std;

#define nyahalo ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define otsumiko exit(0);
#define mikodanye priority_queue<pair<long long, long long>, vector<pair<long long, long long> >, greater<pair<long long, long long> > >
#define mikochi priority_queue<long long, vector<long long>, greater<long long> >

long long k, n, s[100069], t[100069], ca, cb, ad = 0, ans = 0, sz, md, fp, sp, cs, mn;
char p[100069], q[100069];
vector<long long> vc;

int main() {
  nyahalo
  long long i, j, ii;
  cin >> k >> n;
  if (k == 1) {
    for (i=1; i<=n; i++) {
      cin >> p[i] >> s[i] >> q[i] >> t[i];
      ca = p[i]-'A';
      cb = q[i]-'A';
      if (ca == cb) {
        ad += abs(s[i]-t[i]);
      } else {
        vc.push_back(s[i]);
        vc.push_back(t[i]);
      }
    }
    sort(vc.begin(), vc.end());
    sz = vc.size();
    md = sz/2;
    for (i=0; i<sz; i++) {
      ans += abs(vc[i]-vc[md]);
    }
    ans += sz/2;
    ans += ad;
    cout << ans << "\n";
    otsumiko
    //uwu
  }
  if (n<=100) {
    for (i=1; i<=n; i++) {
      cin >> p[i] >> s[i] >> q[i] >> t[i];
      ca = p[i]-'A';
      cb = q[i]-'A';
      if (ca == cb) {
        ad += abs(s[i]-t[i]);
      } else {
        vc.push_back(s[i]);
        vc.push_back(t[i]);
      }
    }
    sort(vc.begin(), vc.end());
    sz = vc.size();
    ans = 1e17;
    if (sz == 0) {
      ans = 0;
    }
    for (i=0; i<sz; i++) {
      for (j=i+1; j<sz; j++) {
        fp = vc[i];
        sp = vc[j];
        cs = 0;
        for (ii=1; ii<=n; ii++) {
          if (p[ii] == q[ii]) {
            continue;
          }
          mn = min(abs(fp-s[ii])+abs(fp-t[ii])+1, abs(sp-s[ii])+abs(sp-t[ii])+1);
          cs += mn;
        }
        ans = min(ans, cs);
      }
    }
    ans += ad;
    cout << ans << "\n";
    otsumiko
  }
  cout << "sek\n";
  otsumiko
}
#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...