Submission #430501

#TimeUsernameProblemLanguageResultExecution timeMemory
430501juancarlovieriCoin Collecting (JOI19_ho_t4)C++17
100 / 100
209 ms5264 KiB
#include <bits/stdc++.h>
using namespace std;

#define kath ash
#define int long long

int cnt[100005][5];

signed main() {
  int n;
  cin >> n;
  long long ans = 0;
  for (int i = 0; i < 2 * n; ++i) {
    int x, y;
    cin >> x >> y;
    int nx = max(1ll, min(n, x));
    int ny = max(1ll, min(2ll, y));
    ++cnt[nx][ny];
    ans += abs(x - nx) + abs(y - ny);
  }
  vector<int> filled(3);
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= 2; ++j) {
      int fill = min(i - filled[j], cnt[i][j]);
      ans += 1ll * (i - filled[j] - 1) * fill - fill * (fill - 1) / 2;
      filled[j] += fill;
      cnt[i][j] -= fill;
    }
    for (int j = 1; j <= 2; ++j) {
      int fill = min(i - filled[j % 2 + 1], cnt[i][j]);
      ans += 1ll * (i - filled[j % 2 + 1] - 1) * fill - fill * (fill - 1) / 2 + fill;
      filled[j % 2 + 1] += fill;
      cnt[i][j] -= fill;
    }
    if (i + 1 <= n) {
      for (int j = 1; j <= 2; ++j) {
        ans += cnt[i][j];
        cnt[i + 1][j] += cnt[i][j];
      }
    }
  }
  cout << ans << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...