제출 #1300847

#제출 시각아이디문제언어결과실행 시간메모리
1300847Faisal_SaqibIzbori (COCI22_izbori)C++20
25 / 110
28 ms1596 KiB
#include <bits/stdc++.h> using namespace std; const int N=2e5+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]); } int 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...