【POJ】2823 Sliding Window

 1 #include<cstdio>

 2 #define MAXN 1000010

 3 int a[MAXN],q[MAXN];

 4 int main()

 5 {

 6     int n,k,i,j,front,rear;

 7     while(~scanf("%d%d",&n,&k))

 8     {

 9         for(i=1;i<=n;i++)

10             scanf("%d",&a[i]);

11         front=0;

12         rear=-1;

13         for(i=1;i<=k;i++)

14         {

15             for(;front<=rear&&a[q[rear]]>=a[i];rear--);

16             q[++rear]=i;

17         }

18         printf("%d",a[q[front]]);

19         for(j=1;i<=n;i++,j++)

20         {

21             if(front<=rear&&q[front]<=j)

22                 front++;

23             for(;front<=rear&&a[q[rear]]>=a[i];rear--);

24             q[++rear]=i;

25             printf(" %d",a[q[front]]);

26         }

27         putchar('\n');

28         front=0;

29         rear=-1;

30         for(i=1;i<=k;i++)

31         {

32             for(;front<=rear&&a[q[rear]]<=a[i];rear--);

33             q[++rear]=i;

34         }

35         printf("%d",a[q[front]]);

36         for(j=1;i<=n;i++,j++)

37         {

38             if(front<=rear&&q[front]<=j)

39                 front++;

40             for(;front<=rear&&a[q[rear]]<=a[i];rear--);

41             q[++rear]=i;

42             printf(" %d",a[q[front]]);

43         }

44         putchar('\n');

45     }

46     return 0;

47 }

你可能感兴趣的:(window)