Cod sursa(job #311979)

Utilizator rusu_raduRusu Radu rusu_radu Data 4 mai 2009 20:52:53
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream.h>

long long int n, a, i, st, dr, drm, stm, ok, amax=-400, S, Smax, drmax, stmax;

ifstream fin("ssm.in");
ofstream fout("ssm.out");

int main()
{
  fin>>n;
  st=1; ok=1;
  for (i=1; i<=n; i++)
    {
      fin>>a;
      if (a>=0)
	{
	  S+=a;
	  dr=i;
	  ok=0;
	}
      else
	{
	  if (a>amax)
	    {amax=a; drm=i; stm=i;}
	  if (S>Smax)
	    {
	      Smax=S;
	      drmax=dr;
	      stmax=st;
	    }
	  if (S+a>0)
	    {S+=a;dr=i;}
	  else
	    {
	      S=0;
	      st=i+1;
	    }
	}
    }

  if (S>Smax)
     {
       Smax=S;
       drmax=dr;
       stmax=st;
     }

  if (ok)
    fout<<amax<<" "<<stm<<" "<<drm<<'\n';
  else
    fout<<Smax<<" "<<stmax<<" "<<drmax<<'\n';
  fout.close();
  return 0;
}