Submission #968055

#TimeUsernameProblemLanguageResultExecution timeMemory
968055vjudge1Vudu (COCI15_vudu)C++17
126 / 140
709 ms58580 KiB
#include<bits/stdc++.h> using namespace std; int n; unordered_map<int, int> fw; long long ans; void update(int idx, int val){ for(; idx <= n; idx+=(idx&-idx)) fw[idx]+=val; } long long query(int idx){ long long sum = 0; for(; idx; idx-=(idx&-idx)) sum+=fw[idx]; return sum; } signed main(){ cin.tie(nullptr)->sync_with_stdio(false); cin >> n; long long qs[n+1], k; vector<long long> v; memset(qs, 0, sizeof(qs)); for(int i = 1; i<=n; ++i) cin >> qs[i]; cin >> k; for(int i = 1; i<=n; ++i) qs[i]+=qs[i - 1]; for(int i = 1; i<=n; ++i) v.push_back(qs[i] - i*k); sort(v.begin(), v.end()); v.erase(unique(v.begin(), v.end())); for(int i = 0; i<=n; ++i){ int id = lower_bound(v.begin(), v.end(), qs[i] - i*k) - v.begin(); ans+=query(id+1); update(id+1, 1); } cout << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...