View Code of Problem 1081

#include<iostream>
#include <cstdio>
using namespace std;

int s[10001],a[10001],f[10001];

int main()
{
//freopen("test.txt","r",stdin);
    int n,i,mx,st,ed;
    bool flag;
    int tc;
    scanf("%d",&tc);
    while(tc--)
    {
        int n;
        scanf("%d",&n);
        for(i=1; i<=n; i++)
            scanf("%d",&a[i]);
        f[1]=a[1];
        s[1]=1;
        for(i=2; i<=n; i++)
        {
            if(f[i-1]+a[i]>a[i])
            {
                f[i]=f[i-1]+a[i];
                s[i]=s[i-1];
            }
            else
            {
                f[i]=a[i];
                s[i]=i;
            }
        }
        /* for(i=1;i<=n;i++)
        cout<<f[i]<<" ";
          cout<<endl;*/
        mx=0;
        st=1;
        ed=1;
        for(i=1; i<=n; i++)
        {
            if(f[i]>mx)
            {
                mx=f[i];
                st=s[i];
                ed=i;
            }
            if(f[i]==mx)
            {
                int l=s[i];
                int r=i;
                if((r-l)<(ed-st))
                {
                    st=l;
                    ed=r;
                }
            }
        }
        if(mx>0)
            cout<<st<<" "<<ed<<" "<<mx<<endl;
        else
            cout<<0<<" "<<0<<" "<<0<<endl;
    }
	return 0;
}

Double click to view unformatted code.


Back to problem 1081