关闭

HDU1003 max sum

45人阅读 评论(0) 收藏 举报
分类:
#include<stdio.h>
#include<iostream>
using namespace std;
int T,n;
int result=0;
int a[11000];
struct segment{
    int l,r;
};
int maxR,maxid;

struct segment seg[11000];
int main(){
    scanf("%d",&T);
    int cid=1;
    for(;cid<=T;cid++){
        scanf("%d",&n);
        int i;
        for(i=1;i<=n;i++)
            scanf("%d",&a[i]);


        seg[1].l=1;
        seg[1].r=1;

        for(i=2;i<=n;i++){
            if(a[i]+a[i-1]>a[i]){
                a[i]=a[i]+a[i-1];
                seg[i].l=seg[i-1].l;
                seg[i].r=i;
            }else{
                a[i]=a[i];
                seg[i].l=seg[i].r=i;
            }
        maxR=a[1];
        maxid=1;
        for(i=2;i<=n;i++){
            if(a[i]>maxR){
                maxR=a[i];
                maxid=i;}
        }
            if(cid!=1)
        printf("\n");
        }       
        printf("Case %d:\n",cid);
        printf("%d %d %d\n",maxR,seg[maxid].l,seg[maxid].r);
    }
    return 0;
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:643次
    • 积分:54
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档