제출 #1147931

#제출 시각아이디문제언어결과실행 시간메모리
1147931Kaang즐거운 채소 기르기 (JOI14_growing)C++20
30 / 100
12 ms4164 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using ull=unsigned long long; using pii = pair<int,int>; using pli = pair<ll,int>; using pil = pair<int,ll>; using pll = pair<ll,ll>; #define endl '\n' #define pb push_back #define eb emplace_back #define fi first #define se second #define sz(v) ((int)(v).size()) #define all(v) v.begin(), v.end() using tpl=tuple<int,int,int>; using namespace std; ll n,d[300005],fenwick[300005],fr[300005],bc[300005]; map <ll,ll> m; void upf(int node,ll val) { while(node<=n) { fenwick[node]+=val; node+=node&-node; } } ll qry(int node) { ll ret=0; while(node>0) { ret+=fenwick[node]; node-=node&-node; } return ret; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int i=1;i<=n;i++) cin>>d[i]; for(int i=1;i<=n;i++) m[d[i]]=0; int cnt=0; for(auto &it:m) it.se=++cnt; for(int i=1;i<=n;i++) d[i]=m[d[i]]; for(int i=1;i<=n;i++) { fr[i]=fr[i-1]+qry(n)-qry(d[i]); upf(d[i],1); } for(int i=1;i<=300000;i++) fenwick[i]=0; for(int i=n;i>=1;i--) { bc[i]=bc[i+1]+qry(n)-qry(d[i]); upf(d[i],1); } ll ans=(ll)100000000000000; for(int i=0;i<=n;i++) ans=min(ans,fr[i]+bc[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...