Pagini recente » Cod sursa (job #2818993) | Cod sursa (job #1580344) | Cod sursa (job #1988749) | Cod sursa (job #1767419) | Cod sursa (job #634225)
Cod sursa(job #634225)
#include<fstream>
const int Nmax = 6000000;
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int indice_inceput,indice_sfarsit;
int x;
int suma;
int lungime;
int n;
void Sol()
{
int i;
fin>>n;
indice_inceput = indice_sfarsit = 1;
fin>>x;
suma = x;
int suma_partiala = x;
int ind_inceput = 1;
for( i=2;i<=n;++i)
{
/*Dacă există mai mult subsecvenţe candidate la soluţie, atunci se va tipări cea cu
indicele de început cel mai mic, iar în caz de egalitate cea mai scurtă.*/
fin>>x;
if( suma_partiala + x >= x && x >0 )
{
suma_partiala = suma_partiala + x;
}
else
if( suma_partiala + x >= x && x < 0 )
{
if(suma_partiala > suma)
{
indice_inceput = ind_inceput;
indice_sfarsit = i-1;
suma = suma_partiala;
}
suma_partiala = suma_partiala + x;
}
else
{
if(suma_partiala > suma)
{
indice_inceput = ind_inceput;
indice_sfarsit = i-1;
suma = suma_partiala;
}
ind_inceput = i;
suma_partiala = x;
}
}
if(suma_partiala > suma)
{
indice_inceput = ind_inceput;
indice_sfarsit = i-1;
suma = suma_partiala;
}
fout<<suma<<" "<<indice_inceput<<" "<<indice_sfarsit<<"\n";
}
int main()
{
Sol();
fout.close();
fin.close();
return 0;
}