Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
52719 wssdr 木薯与身高 C++ 解答错误 30 311 MS 11968 KB 789 2022-07-20 11:51:07

Tests(6/20):


#include<bits/stdc++.h> #define N 1000005 using namespace std; struct Node{int h,id;}; struct Node st[N]; int n,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(int x){ return x&(-x); } inline void Insert(int x){ int tmp(x); while(x<=n){ c[x]=min(c[x],tmp); x+=lowbit(x); } } inline int Min(int x){ int 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("%d\n",ans); return 0; }


测评信息: