Submission #1300850

#TimeUsernameProblemLanguageResultExecution timeMemory
1300850Faisal_SaqibIzbori (COCI22_izbori)C++20
40 / 110
3095 ms2688 KiB
#include <bits/stdc++.h> using namespace std; const int N=1e6+10; int a[N],pre[N],fen[N],n; void add(int x,int v=1) { x+=n+1; while(x<N) { fen[x]+=v; x+=(x&-x); } } int query(int x) { x+=n+1; int ans=0; while(x>0) { ans+=fen[x]; x-=(x&-x); } return ans; } int main() { ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n; set<int> dif; for(int i=0;i<n;i++) { cin>>a[i]; dif.insert(a[i]); } long long ans=0; for(auto x:dif) { for(int i=0;i<n;i++) { pre[i+1]=pre[i]+(a[i]==x?+1:-1); // pre[i+1] > pre[j] add(pre[i]); ans+=query(pre[i+1]-1); } for(int i=0;i<n;i++)add(pre[i],-1); } cout<<ans<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...