标签:
1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<cstring> 5 using namespace std; 6 const int maxn = 100010; 7 int n, a[maxn]; 8 int d[maxn]; 9 void dp() 10 { 11 memset(d, 0, sizeof(d)); 12 d[0] = a[0]; 13 for(int i = 1; i < n; i++) 14 { 15 if(d[i-1] > 0) d[i] = d[i-1]+a[i]; 16 else d[i] = a[i]; 17 } 18 //cout << endl; 19 int st = 0, en = 0; 20 int max_ = d[0]; 21 for(int i = 1; i < n; i++) 22 { 23 if(d[i]>max_) 24 { 25 max_ = d[i]; 26 en = i; 27 } 28 } 29 st = en; 30 for(int j = en-1; j>=0; j--) 31 { 32 if(d[j] < 0) break; 33 else st = j; 34 } 35 printf("%d %d %d\n", max_, st+1, en+1); 36 } 37 38 int main() 39 { 40 int T; scanf("%d", &T); 41 for(int kase = 0; kase < T; kase++) 42 { 43 scanf("%d", &n); 44 for(int i = 0; i < n; i++) 45 scanf("%d", &a[i]); 46 if(kase) printf("\n"); 47 printf("Case %d:\n", kase+1); 48 dp(); 49 50 } 51 return 0; 52 }
标签:
原文地址:http://www.cnblogs.com/LLGemini/p/4432506.html