Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52819 | AK2022071316 | 木薯与身高 | C++ | 解答错误 | 30 | 214 MS | 8064 KB | 762 | 2022-07-20 12:01:35 |
#include<bits/stdc++.h> #define fst(a,b,c) for(int a=(b);a<=(c);a++) #define pii pair<int,int> #define fr first #define sc second using namespace std; const int N=1e6+100; int n,ans; int p[N],ord[N],mn; int read(){ char in=getchar(); int x=0; while(!isdigit(in)) in=getchar(); while(isdigit(in)) x=x*10+(in^48),in=getchar(); return x; } bool cmp(int x,int y){return p[x]>p[y];} int main(){ // freopen("height.in","r",stdin); // freopen("height.out","w",stdout); n=read(); mn=n+1; fst(i,1,n) p[i]=read(),ord[i]=i; sort(ord+1,ord+n+1,cmp); fst(i,1,n){ int tmp=i; while(p[ord[tmp+1]]==p[ord[tmp]]) tmp++; fst(j,i,tmp) ans+=max(0,ord[j]-mn); fst(j,i,tmp) mn=min(mn,ord[j]); i=tmp; } printf("%d\n",ans); return 0; }