Submission #1227272

#TimeUsernameProblemLanguageResultExecution timeMemory
1227272ByeWorldVudu (COCI15_vudu)C++20
140 / 140
234 ms31736 KiB
#include <bits/stdc++.h> // #pragma GCC optimize("O3") #define int long long #define ll long long #define se second #define fi first #define pb push_back #define lf (id<<1) #define rg ((id<<1)|1) #define md ((l+r)>>1) using namespace std; typedef pair<int,int> pii; typedef pair<pii,pii> ipii; const int MAXN = 1e6+10; const int SQRT = 450; const int INF = 2e18; const int MOD = 235813; const int LOG = 32; int sum(int a, int b){ return (a+MOD+b)%MOD; } void chsum(int &a, int b){ a = (a+MOD+b)%MOD; } int mul(int a, int b){ return (a*b)%MOD; } void chmul(int &a, int b){ a = (a*b)%MOD; } int expo(int a, int b){ if(b==0) return 1; int te = expo(a, b/2); te = mul(te,te); return (b%2 ? mul(te,a) : te); } void chmn(auto &a, auto b){ a = min(a, b); } void chmx(auto &a, auto b){ a = max(a, b); } int n, a[MAXN], pr[MAXN]; struct fen { int st[MAXN]; int que(int x){ int te = 0; for(; x; x-=x&-x) te += st[x]; return te; } void upd(int x, int p){ for(; x<=MAXN-10; x+=x&-x) st[x] += p; } } A; signed main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n; for(int i=1; i<=n; i++) cin>>a[i]; int p; cin>>p; vector<int> cc; cc.pb(-INF); cc.pb(0); for(int i=1; i<=n; i++){ a[i] -= p; pr[i] = pr[i-1]+a[i]; cc.pb(pr[i]); // cout<< pr[i] << " i\n"; } sort(cc.begin(), cc.end()); cc.resize(unique(cc.begin(), cc.end()) - cc.begin()); for(int i=0; i<=n; i++) pr[i] = lower_bound(cc.begin(), cc.end(), pr[i])-cc.begin(); int ans = 0; A.upd(pr[0], 1); for(int i=1; i<=n; i++){ // bnyknya pref yg <= pr[i] ans += A.que(pr[i]); A.upd(pr[i], 1); } cout << ans << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...