Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
1830 18级王浩宇 【S】T2 区间 C++ 运行超时 0 1000 MS 20544 KB 1439 2020-11-16 11:14:58

Tests(0/10):


#include<bits/stdc++.h> #define ls (now<<1) #define rs (now<<1|1) #define mid ((l+r)>>1) using namespace std; const int N=1e6+10; const int inf=0x3f3f3f3f; int n,k,ans; int a[N],tmin[N<<2],tmax[N<<2]; int build_min(int now,int l,int r) { if(l==r) { tmin[now]=a[l]; return a[l]; } tmin[now]=min(build_min(ls,l,mid),build_min(rs,mid+1,r)); return tmin[now]; } int query_min(int now,int l,int r,int x,int y) { if (y < l || r < x) { return inf; } if(x<=l && r<=y) return tmin[now]; return min(query_min(ls,l,mid,x,y),query_min(rs,mid+1,r,x,y)); } int build_max(int now,int l,int r) { if(l==r) { tmax[now]=a[l]; return a[l]; } tmax[now]=max(build_max(ls,l,mid),build_max(rs,mid+1,r)); return tmax[now]; } int query_max(int now,int l,int r,int x,int y) { if (y < l || r < x) { return 0; } if(x<=l && r<=y) return tmax[now]; return max(query_max(ls,l,mid,x,y),query_max(rs,mid+1,r,x,y)); } int main() { scanf("%d%d",&n,&k); for(int i=1;i<=n;i++) scanf("%d",&a[i]); build_min(1,1,n); build_max(1,1,n); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(query_max(1,1,n,i,j)+query_min(1,1,n,i,j)==k) ans++; } } printf("%d",ans); return 0; }


测评信息: