Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
52900 seanlsy 木薯与身高 C++ 通过 100 60 MS 11980 KB 739 2022-07-20 12:08:31

Tests(20/20):


#include <bits/stdc++.h> using namespace std; inline int read() { int x=0; bool f=1; char ch=getchar(); while(ch<48||ch>57) { if(ch=='-') f=0; ch=getchar(); } while(ch>=48&&ch<=57) { x=(x<<3)+(x<<1)+(ch^48); ch=getchar(); } return f?x:-x; } int n,l,r,mid,maxval[1000005],pos[1000005],a[1000005]; long long ans; int main() { n=read(); for(int i=1; i<=n; i++) { a[i]=read(); if(a[i]>maxval[i-1]) maxval[i]=a[i],pos[i]=i; else maxval[i]=maxval[i-1],pos[i]=pos[i-1]; l=0,r=i; while(l<r-1) { mid=l+r>>1; if(maxval[mid]>a[i]) r=mid; else l=mid; } if(a[i]<maxval[r]) ans+=i-pos[r]; } printf("%lld\n",ans); return 0; }


测评信息: