标签:des style blog http color os
Time Limit: 12000MS | Memory Limit: 65536K | |
Total Submissions: 36147 | Accepted: 10700 | |
Case Time Limit: 5000MS |
Description
Window position | Minimum value | Maximum value |
---|---|---|
[1 3 -1] -3 5 3 6 7 | -1 | 3 |
1 [3 -1 -3] 5 3 6 7 | -3 | 3 |
1 3 [-1 -3 5] 3 6 7 | -3 | 5 |
1 3 -1 [-3 5 3] 6 7 | -3 | 5 |
1 3 -1 -3 [5 3 6] 7 | 3 | 6 |
1 3 -1 -3 5 [3 6 7] | 3 | 7 |
Your task is to determine the maximum and minimum values in the sliding window at each position.
Input
Output
Sample Input
8 3 1 3 -1 -3 5 3 6 7
Sample Output
-1 -3 -3 -3 3 3 3 3 5 5 6 7线段树、区间求最值
#include"stdio.h" #include"string.h" #define N 1000005 int num[N]; int aa[N],bb[N]; //记录最大最小值 struct node { int l,r,num,min,max; }f[N*3]; int Min(int a,int b) { return a<b?a:b; } int Max(int a,int b) { return a>b?a:b; } void creat(int t,int l,int r) { f[t].l=l; f[t].r=r; if(l==r) { f[t].num=f[t].max=f[t].min=num[r]; return ; } int temp=t*2,mid=(l+r)/2; creat(temp,l,mid); creat(temp+1,mid+1,r); f[t].max=Max(f[temp].max,f[temp+1].max); f[t].min=Min(f[temp].min,f[temp+1].min); return ; } int fmax(int t,int l,int r) { if(f[t].l>=l&&f[t].r<=r) return f[t].max; int temp=t*2,mid=(f[t].l+f[t].r)/2; if(mid>=r) return fmax(temp,l,r); else if(mid<l) return fmax(temp+1,l,r); else return Max(fmax(temp,l,mid),fmax(temp+1,mid+1,r)); } int fmin(int t,int l,int r) { if(f[t].l>=l&&f[t].r<=r) return f[t].min; int temp=t*2,mid=(f[t].l+f[t].r)/2; if(mid>=r) return fmin(temp,l,r); else if(mid<l) return fmin(temp+1,l,r); else return Min(fmin(temp,l,mid),fmin(temp+1,mid+1,r)); } int main() { int n,m,i; while(scanf("%d%d",&n,&m)!=-1) { for(i=1;i<=n;i++) scanf("%d",&num[i]); creat(1,1,n); int a=1,b,k=0; while(a<=n-m+1) { b=a+m-1; aa[k]=fmin(1,a,b); bb[k++]=fmax(1,a,b); a++; } for(i=0;i<n-m;i++) printf("%d ",aa[i]); printf("%d\n",aa[n-m]); for(i=0;i<n-m;i++) printf("%d ",bb[i]); printf("%d\n",bb[n-m]); } return 0; }
poj 2823 Sliding Window,码迷,mamicode.com
标签:des style blog http color os
原文地址:http://blog.csdn.net/u011721440/article/details/24627827