Submission #1156628

#TimeUsernameProblemLanguageResultExecution timeMemory
1156628spycoderytVudu (COCI15_vudu)C++20
42 / 140
1098 ms101908 KiB
#include <bits/stdc++.h> #define ll int using namespace std; const int N = 1e6+5; int fen[N]; ll v[N]; void add(int pos,int val) { for(int i = pos;i<N;i+=i&-i)fen[i]+=val; } int sum(int pos){ int res=0; for(int i = pos;i>0;i-=i&-i)res+=fen[i]; return res; } int32_t main() { cin.tie(0)->sync_with_stdio(0); int n,p; ll ans=0; cin >> n; for(int i = 1;i<=n;i++)cin>>v[i]; cin>>p; for(int i = 1;i<=n;i++)v[i] -= p; for(int i = 1;i<=n;i++)v[i] += v[i-1]; map<ll,int> mp; int cnt = 1; set<ll>st; for(auto e : v) st.insert(e); st.insert(0); for(auto e : st) mp[e]=cnt++; add(mp[0],1); for(int i = 1;i<=n;i++) { // cur - pref >= 0 so pref <= cur ans+=sum(mp[v[i]]); add(mp[v[i]],1); // if(v[i]>=0)ans++; // cerr<<ans<<"\n"; } cout << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...