Submission #895376

#TimeUsernameProblemLanguageResultExecution timeMemory
895376MilosMilutinovic즐거운 채소 기르기 (JOI14_growing)C++14
100 / 100
85 ms9332 KiB
#include <bits/stdc++.h>

using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n;
  cin >> n;
  vector<int> a(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  long long ans = 1e18;
  vector<int> fenw(n + 1);
  auto Modify = [&](int p, int v) {
    for (p++; p <= n; p += p & -p) {
      fenw[p] += v;
    }
  };
  auto Query = [&](int p) {
    int res = 0;
    for (p++; p; p -= p & -p) {
      res += fenw[p];
    }
    return res;
  };
  vector<int> xs;
  for (int i = 0; i < n; i++) {
    xs.push_back(a[i]);
  }
  sort(xs.begin(), xs.end());
  xs.erase(unique(xs.begin(), xs.end()), xs.end());
  for (int i = 0; i < n; i++) {
    a[i] = (int) (lower_bound(xs.begin(), xs.end(), a[i]) - xs.begin());
  }
  vector<int> L(n);
  for (int i = 0; i < n; i++) {
    L[i] = Query(n - 1) - Query(a[i]);
    Modify(a[i], +1);
  }
  fenw = vector<int>(n + 1, 0);
  vector<int> R(n);
  for (int i = n - 1; i >= 0; i--) {
    R[i] = Query(n - 1) - Query(a[i]);
    Modify(a[i], +1);
  }
  long long res = 0;
  for (int i = 0; i < n; i++) {
    res += min(L[i], R[i]);
  }
  cout << res << '\n';
  return 0;
}

Compilation message (stderr)

growing.cpp: In function 'int main()':
growing.cpp:14:13: warning: unused variable 'ans' [-Wunused-variable]
   14 |   long long ans = 1e18;
      |             ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...