pku 2823 Sliding Window 赤裸裸的单调队列,G++还TLE,C++5S不到。。orz

pku 2823 Sliding Window 赤裸裸的单调队列,G++还TLE,C++5S不到。。orz

不解释了,求固定长度的区间最大值和最小值,单调队列即可。。
 1  # include  < cstdio >
 2  // # include <iostream>
 3  using   namespace  std;
 4  const   int  N = 1000005 ;
 5  int  data[N],q[N],s =- 1 ,e =- 1 ;
 6  int  main()
 7  {
 8       int  n,k;
 9      scanf( " %d%d " , & n, & k);
10       for ( int  i = 0 ;i < n;i ++ )
11        scanf( " %d " ,data + i);
12       for ( int  i = 0 ;i < n;i ++ )
13      {
14          while (s != e && i - q[s + 1 ] >= k) s ++ ;
15          while (s != e && data[q[e]] >= data[i]) e -- ;
16         q[ ++ e] = i;
17          if (i >= k - 1 ) printf( " %d%c " ,data[q[s + 1 ]],i != n - 1 ? '   ' : ' \n ' );
18      }
19      s = e =- 1 ;
20       for ( int  i = 0 ;i < n;i ++ )
21      {
22          while (s != e && i - q[s + 1 ] >= k) s ++ ;
23          while (s != e && data[q[e]] <= data[i]) e -- ;
24         q[ ++ e] = i;
25          if (i >= k - 1 ) printf( " %d%c " ,data[q[s + 1 ]],i != n - 1 ? '   ' : ' \n ' );
26      }
27      //  system("pause");
28       return   0 ;
29      
30  }
31 


你可能感兴趣的:(pku 2823 Sliding Window 赤裸裸的单调队列,G++还TLE,C++5S不到。。orz)