Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
52795 wssdr 木薯与身高 C++ 通过 100 325 MS 15876 KB 811 2022-07-20 11:58:12

Tests(20/20):


#include<bits/stdc++.h> #define ll long long #define N 1000005 using namespace std; struct Node{int h,id;}; struct Node st[N]; int n;ll c[N],ans; inline bool cmp(const Node&x,const Node&y){ return (x.h^y.h)?x.h>y.h:x.id>y.id; } inline int lowbit(ll x){ return x&(-x); } inline void Insert(ll x){ ll tmp(x); while(x<=n){ c[x]=min(c[x],tmp); x+=lowbit(x); } } inline ll Min(int x){ ll res(n+1); while(x){ res=min(res,c[x]); x-=lowbit(x); } return res; } int main(){ scanf("%d",&n); for(int i(1);i<=n;++i){ scanf("%d",&st[i].h); st[i].id=i; } sort(st+1,st+1+n,cmp); for(int i(1);i<=n;++i) c[i]=n+1; for(int i(1),res;i<=n;++i){ res=Min(st[i].id); ans+=(res^n+1)?abs(st[i].id-res):0; Insert(st[i].id); } printf("%lld\n",ans); return 0; }


测评信息: