Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Why WA ?#include<stdio.h> #define MAX 2000001 int maxit[MAX],minit[MAX],ifm[MAX]; int a[2][MAX],cnt; int n,k,temp=1; int maxi=-999999999,mini=999999999; void input() { int i; scanf("%d %d",&n,&k); for(i=1;i<=n;i++) { scanf("%d",&ifm[i]); } for(i=1;i<=2*n;i++) { maxit[i]=-999999999; minit[i]=999999999; } } void setting() { int i,V; for(;;) { if(temp>=n) break; temp*=2; } for(i=1;i<=n;i++) { V=i+temp-1; maxit[V]=ifm[i]; minit[V]=ifm[i]; while(V>=1) { if(V%2==0) V=V/2; else V=(V-1)/2; if(maxit[V]<ifm[i]) maxit[V]=ifm[i]; if(minit[V]>ifm[i]) minit[V]=ifm[i]; } } } void maxi_search(int l,int r) { while(l<=r) { if(l==r) { if(maxi<maxit[l]) { maxi=maxit[l]; break; } } if(l%2==1) { if(maxi<maxit[l]) { maxi=maxit[l]; } l=(l+1)/2; } else { l/=2; } if(r%2==0) { if(maxi<maxit[r]) { maxi=maxit[r]; } r=(r-1)/2; } else { r=r/2; } } } void mini_search(int l,int r) { while(l<=r) { if(l==r) { if(mini>minit[l]) { mini=minit[l]; } break; } if(l%2==1) { if(mini>minit[l]) { mini=minit[l]; } l=(l+1)/2; } else { if(mini>minit[l]) { mini=minit[l]; } l=l/2; } if(r%2==0) { if(mini>minit[r]) { mini=minit[r]; } r=(r-1)/2; } else { if(mini>minit[r]) { mini=minit[r]; } r=r/2; } } } void indextree() { int i; setting(); for(i=1;i<=n;i++) { if(i+k-1>n) break; maxi_search(i+temp-1,i+k+temp-2); mini_search(i+temp-1,i+k+temp-2); a[0][cnt]=mini; a[1][cnt++]=maxi; mini=99999999; maxi=-999999999; } } void output() { int i,j; for(i=0;i<2;i++) { for(j=0;j<cnt;j++) { printf("%d ",a[i][j]); } printf("\n"); } } int main() { input(); indextree(); output(); return 1; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator