Cod sursa(job #269773)

Utilizator alecmanAchim Ioan Alexandru alecman Data 3 martie 2009 13:28:50
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<stdio.h>

#define INPUT "ssm.in"
#define OUTPUT "ssm.out"
#define NMAX 6000001
#define LL long long

FILE *fin = fopen(INPUT, "r"), *fout = fopen(OUTPUT, "w");

LL N, optim;
LL A[ NMAX ];

void readData()
{
  fscanf(fin, "%lld", &N);

  for(LL i = 0; i < N; ++i)
    fscanf(fin, "%lld", A+i);
}

void solve()
{
  LL start = 0, Pmin = 0, Pmax = 0, Foptim;

  Foptim = A[ 0 ];
  optim = 0;

  for(LL i = 0; i < N; ++i)
  {
    if(optim < 0)
    {
      optim = A[i];
      start = i;
    }
    else
      optim += A[ i ];

    if(Foptim < optim)
    {
      Foptim = optim;
      Pmin = start;
      Pmax = i;
    }
  }

  fprintf(fout, "%lld %lld %lld\n", Foptim, Pmin+1, Pmax+1);
}

int main()
{
  readData();

  solve();

  fclose(fin);
  fclose(fout);

  return 0;
}