Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
53034 lz 木薯与身高 C++ 运行出错 30 172 MS 15708 KB 866 2022-07-20 23:45:26

Tests(6/20):


#include <bits/stdc++.h> using namespace std; const int N=1e6+5,M=8e6+5; int n; int a[N]; int L[N],R[N]; int tr[N]; inline int f(int a,int b) { if(a<b) return b; return a; } void buildtree(int x,int l,int r) { L[x]=l; R[x]=r; if(l==r) { tr[x]=a[l]; return ; } int mid=(l+r)/2; buildtree(x*2,l,mid); buildtree(x*2+1,mid+1,r); tr[x]=f(tr[x*2],tr[x*2+1]); } inline int query(int x,int q) { if(L[x]==R[x]) return L[x]; if(tr[x*2]>q) return query(x*2,q); if(tr[x*2+1]>q)return query(x*2+1,q); return 0; } long long ans; int x; int main() { scanf("%d",&n); for(register int i=1; i<=n; i++) scanf("%d",&a[i]); buildtree(1,1,n); for(register int i=1; i<=n; i++) { x=query(1,a[i]); if(x>0&&x<i) { ans+=i-x; } } printf("%lld\n",ans); return 0; }


测评信息: