Cod sursa(job #754795)

Utilizator XladhenianGrigorita Vlad-Stefan Xladhenian Data 3 iunie 2012 14:33:10
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
                                                     
#include <fstream>
using namespace std;

int main(void)
{
 fstream fin("ssm.in",ios::in);
 fstream fout("ssm.out",ios::out);
 long N,a,sumstart,totalsum,bestsum,beststart,bestend,i,allneg,maxneg,maxnegpos;
 fin >> N;
 sumstart = 0;
 totalsum = 0;
 bestsum = -1;
 beststart = -1;
 bestend = -1;
 allneg = 1;
 maxneg = 0X80000000;
 maxnegpos = -1;
 for (i = 0;i < N;i += 1)
  {
   fin >> a;
   if (a >= 0)
     {
      allneg = 0;
     }
    else
     {
      if (a > maxneg)
        {
         maxneg = a;
         maxnegpos = i;
        }
     }
   totalsum += a;
   if (totalsum < 0)
     {
      totalsum = 0;
      sumstart = i + 1;
     }
   if (totalsum > bestsum)
     {
      bestsum = totalsum;
      beststart = sumstart;
      bestend = i;
     }
  }
 if (allneg == 0)
   {
    fout << bestsum << " " << (beststart + 1) << " " << (bestend + 1) << "\n";
   }
  else
   {
    fout << maxneg << " " << (maxnegpos + 1) << " " << (maxnegpos + 1) << "\n";
   }
 fin.close();
 fout.close();
 return 0;
}