| 比赛 |
USACO2026 JAN G&P2 |
评测结果 |
AAAAAAAAAAAAAA |
| 题目名称 |
Milk Buckets |
最终得分 |
100 |
| 用户昵称 |
Ruyi |
运行时间 |
1.719 s |
| 代码语言 |
C++ |
内存使用 |
8.47 MiB |
| 提交时间 |
2026-01-24 11:44:09 |
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
#define N 200001
using namespace std;
ll n,tt,a[N],r[N],t[N],cl[N],cr[N];
vector<int> v;
void u(int p,int val){
while(p<N){
t[p]+=val;
p+=p&-p;
}
return ;
}
ll q(int p){
ll res=0;
while(p>0){
res+=t[p];
p-=p&-p;
}
return res;
}
void f(){
v.clear();
for(int i=1;i<=n;i++) v.push_back(a[i]);
sort(v.begin(),v.end());
v.erase(unique(v.begin(),v.end()),v.end());
for(int i=1;i<=n;i++) r[i]=lower_bound(v.begin(),v.end(),a[i])-v.begin()+1;
return ;
}
int main(){
freopen("Milk.in","r",stdin);
freopen("Milk.out","w",stdout);
cin>>tt;
while(tt--){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
f();
memset(t,0,sizeof(t));
for(int i=1;i<=n;i++){
int x=r[i];
cl[i]=q(x-1);
u(x,1);
}
memset(t,0,sizeof(t));
for(int i=n;i>0;i--){
int x=r[i];
cr[i]=q(x-1);
u(x,1);
}
ll ans=0;
for(int i=1;i<=n;i++) ans+=min(cl[i],cr[i]);
cout<<ans<<'\n';
}
return 0;
}