제출 #1190734

#제출 시각아이디문제언어결과실행 시간메모리
1190734aladdin1Mountains (NOI20_mountains)C++20
100 / 100
481 ms19212 KiB
#include <bits/stdc++.h> #define int long long #define ll long long #define ld long double #define all(v) v.begin(),v.end() #define INF 1000000000 using namespace std; const int MAX=2e5+5; const int N=3e5+5; const int MOD = 1e9 + 7; /* ---------------------------------------------------------------------------------- | BBBBBBBBBB LL BBBBBBBBBB DDDDDDDD DDDDDDD III N N | BB BB LL BB BB DD DD DD DD III NN N | BB BB LL BB BB DD DD DD DD III N N N | BBBBBBBBBB LL BBBBBBBBBB DD DD DD DD III N N N | BB BB LL BB BB DD DD DD DD III N N N | BB BB LL BB BB DD DD DD DD III N N N | BB BB LL BB BB DD DD DD DD III N NN | BB BB LLLLLLLL BB BB DDDDDDDD DDDDDDD III N N | | ---------------------------------------------------------------------------------- */ vector<int>t; void update(int v,int l,int r,int pos,int val){ if(l==r){ t[v]+=val; return; } int mid=(l+r)/2; if(pos<=mid) update(2*v,l,mid,pos,val); else update(2*v+1,mid+1,r,pos,val); t[v]=t[2*v]+t[2*v+1]; } int query(int v,int l,int r,int tl,int tr){ if(tl>r || tr<l) return 0; if(tl<=l && r<=tr) return t[v]; int mid=(l+r)/2; return query(2*v,l,mid,tl,tr)+query(2*v+1,mid+1,r,tl,tr); } void solve(){ int n;cin>>n; vector<int>v(n); for(int i=0;i<n;i++)cin>>v[i]; vector<int>comp = v; sort(comp.begin(),comp.end()); comp.erase(unique(comp.begin(),comp.end()),comp.end()); int m=comp.size(); t.assign(4*m,0); vector<int>L(n,0),R(n,0); for(int i=0;i<n;i++){ int pos=lower_bound(comp.begin(), comp.end(),v[i])-comp.begin()+1; L[i] = query(1,1,m,1,pos - 1); update(1,1,m,pos,1); } t.assign(4*m,0); for(int i=n-1;i>=0;--i){ int pos=lower_bound(comp.begin(), comp.end(),v[i])-comp.begin()+1; R[i] = query(1,1,m,1,pos - 1); update(1,1,m,pos,1); } int ans=0; for(int i=0;i<n;i++){ ans+=L[i]*R[i]; } cout<<ans<<endl; } signed main(){ int t=1;//cin>>t; while(t--){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...