Submission #1286894

#TimeUsernameProblemLanguageResultExecution timeMemory
1286894kerem즐거운 채소 기르기 (JOI14_growing)C++20
100 / 100
63 ms7592 KiB
#include <bits/stdc++.h> using namespace std; //~ #define int int64_t #define pb push_back #define emb emplace_back #define fr first #define sc second #define all(x) x.begin(),x.end() #define sp << " " << #define N 300000 #define inf (int)1e9 typedef pair<int,int> ii; typedef tuple<int,int,int> iii; int say=1,ft[N+5]; void update(int x){ for(int i=x;i<=say;i+=-i&i) ft[i]++; } int get(int x){ int ans=0; for(int i=x;i>0;i-=-i&i) ans+=ft[i]; return ans; } void solve(){ int n; cin >> n; int a[n]; vector<ii> zip; for(int i=0;i<n;i++){ cin >> a[i]; zip.emb(a[i],i); } sort(all(zip)); for(int i=0;i<n;i++){ if(i && zip[i].fr!=zip[i-1].fr) say++; a[zip[i].sc]=say; } int l[n],r[n]; memset(ft,0,sizeof(ft)); for(int i=0;i<n;i++){ l[i]=i-get(a[i]); update(a[i]); } memset(ft,0,sizeof(ft)); for(int i=n-1;i>=0;i--){ r[i]=(n-i-1)-get(a[i]); update(a[i]); } long long ans=0; for(int i=0;i<n;i++) ans+=min(l[i],r[i]); cout << ans << endl; } int32_t main(){ //~ freopen("hopscotch.in","r",stdin); //~ freopen("hopscotch.out","w",stdout); cout << fixed << setprecision(0); ios_base::sync_with_stdio(false); cin.tie(NULL);cout.tie(NULL); int test=1; //~ cin >> test; while(test--) 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...