标签:长度 cstring 序列 add == click 连续 etc splay
6 4
1 -3 5 1 -2 3
7
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #define max(a, b) ((a) > (b) ? (a) : (b)) 6 #define min(a, b) ((a) < (b) ? (a) : (b)) 7 8 inline void swap(int &a, int &b) 9 { 10 int tmp = a;a = b;b = tmp; 11 } 12 13 inline void read(int &x) 14 { 15 x = 0;char ch = getchar(), c = ch; 16 while(ch < ‘0‘ || ch > ‘9‘)c = ch, ch = getchar(); 17 while(ch <= ‘9‘ && ch >= ‘0‘)x = x * 10 + ch - ‘0‘, ch = getchar(); 18 if(c == ‘-‘)x = -x; 19 } 20 21 const int INF = 0x3f3f3f3f; 22 const int MAXN = 300000 + 10; 23 24 int n, m, sum[MAXN], q[MAXN], rank[MAXN], head, tail, ans; 25 26 int main() 27 { 28 read(n), read(m); 29 for(register int i = 1;i <= n;++ i) read(sum[i]), sum[i] += sum[i - 1]; 30 head = tail = 1; 31 ans = -INF; 32 for(register int i = 1;i <= n;++ i) 33 { 34 while(i - rank[head] > m)++ head; 35 ans = max(ans, sum[i] - q[head]); 36 while(q[tail] >= sum[i] && tail >= head)-- tail; 37 ++ tail; 38 q[tail] = sum[i], rank[tail] = i; 39 40 } 41 printf("%d", ans); 42 return 0; 43 }
标签:长度 cstring 序列 add == click 连续 etc splay
原文地址:http://www.cnblogs.com/huibixiaoxing/p/7549867.html