제출 #94483

#제출 시각아이디문제언어결과실행 시간메모리
94483theknife2001Vudu (COCI15_vudu)C++11
0 / 140
205 ms41516 KiB
#include <bits/stdc++.h> #define ll long long #define mid (l+r)/2 using namespace std; map < ll , int > mp; const int N=1e6+55; int tree[N]; ll sum[N]; ll a[N]; int n; int query(int x) { if(x<=0) return 0; return query(x-(x&(-x)))+tree[x]; } void update(int x) { if(x>n) return ; tree[x]++; update(x+(x&(-x))); } int main() { ios::sync_with_stdio(false); cin>>n; for(int i=0;i<n;i++) cin>>a[i]; int p; cin>>p; for(int i=n-1;i>=0;i--) { sum[i]=a[i]-p; if(i!=n-1) sum[i]+=sum[i+1]; a[i]=sum[i]; } sort(a,a+n); int cnt=1; assert(0); for(int i=0;i<n;i++) { if(mp[a[i]]==0) mp[a[i]]=cnt++; } ll ans=0; for(int i=n-1;i>=0;i--) { if(sum[i]>=0) ans++; ans+=query(mp[sum[i]]); update(mp[sum[i]]); } cout<<ans<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...