Submission #1224379

#TimeUsernameProblemLanguageResultExecution timeMemory
1224379vipulGroup Photo (JOI21_ho_t3)C++20
0 / 100
0 ms320 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; struct BIT { vector<int> bit; int n; BIT(int n) { this->n = n; bit.assign(n + 1, 0); } void add(int idx, int val) { while (idx <= n) { bit[idx] += val; idx += idx & -idx; } } int sum(int idx) { int res = 0; while (idx > 0) { res += bit[idx]; idx -= idx & -idx; } return res; } }; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N; cin >> N; vector<ll> A(N), transformed(N); for (int i = 0; i < N; ++i) { cin >> A[i]; transformed[i] = A[i] - 2LL * i; } // Coordinate compression vector<ll> sorted = transformed; sort(sorted.begin(), sorted.end()); sorted.erase(unique(sorted.begin(), sorted.end()), sorted.end()); int size = sorted.size(); BIT bit(size); ll ans = 0; for (int i = N - 1; i >= 0; --i) { int pos = lower_bound(sorted.begin(), sorted.end(), transformed[i]) - sorted.begin() + 1; ans += bit.sum(pos - 1); bit.add(pos, 1); } cout << ans << "\n"; }
#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...