Submission #237323

#TimeUsernameProblemLanguageResultExecution timeMemory
237323mohamedsobhi777Vudu (COCI15_vudu)C++14
42 / 140
672 ms65540 KiB
#include <bits/stdc++.h> using namespace std; const int N = 1e6 + 7; int n, k; int a[N]; vector<int> srtd ; map<long long, int > mp ; long long bit[N] ; void add(int x){ for(;x < N ;x += x&-x ){ bit[x] ++ ; } } long long get(long long x){ if(x < 0 ) return 0; long long ret =0 ; for(;x;x-=x&-x){ ret+=bit[x] ; } return ret ; } int t =1 ; long long com(long long x){ if(mp[x]){ return mp[x] ; } mp[x] = t++ ; return t-1 ; } void init(){ srtd.push_back(0) ; sort(srtd.begin() , srtd.end()) ; for(int i = 0 ; i < (int) srtd.size() ;i++){ com(srtd[i]) ; } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); //freopen("in.in", "r", stdin); cin >> n; for (int i = 0; i < n; i++) { cin >> a[i]; } cin >> k; long long sum = 0 ; for (int i = 0; i < n; i++) { a[i] -= k; sum+= a[i] ; srtd.push_back(sum) ; } init() ; long long ans = 0; long long pre = 0; add(com(0)) ; for (int i = 0; i < n; i++) { pre += a[i]; ans+= get(com(pre)) ; add(com(pre)) ; } cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...