제출 #1299990

#제출 시각아이디문제언어결과실행 시간메모리
1299990danglayloi1Mountains (NOI20_mountains)C++20
100 / 100
109 ms7608 KiB
#include <bits/stdc++.h> #define ii pair<int, int> #define fi first #define se second #define inf 0x3f3f3f3f3f3f3f3f using namespace std; using ll = long long; const ll mod=1e9+7; const int nx=3e5+5; int n, bit[nx], pre[nx]; ll a[nx], ans=0; vector<ll> rar; int get(int x) { int res=0; for(; x > 0; x-=x&-x) res+=bit[x]; return res; } void add(int x, int val) { for(; x <= n; x+=x&-x) bit[x]+=val; } int 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], rar.emplace_back(a[i]); sort(rar.begin(), rar.end()); rar.erase(unique(rar.begin(), rar.end()), rar.end()); for(int i = 1; i <= n; i++) { a[i]=upper_bound(rar.begin(), rar.end(), a[i])-rar.begin(); pre[i]=get(a[i]-1); add(a[i], 1); } memset(bit, 0, sizeof(bit)); for(int i = n; i >= 1; i--) { ans+=1ll*pre[i]*get(a[i]-1); add(a[i], 1); } cout<<ans; }
#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...