Pagini recente » Cod sursa (job #1924896) | Cod sursa (job #1193398) | Cod sursa (job #105670) | Cod sursa (job #618918) | Cod sursa (job #1479833)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ssm.in",ios::in);
ofstream g("ssm.out",ios::out);
int sum[7000001],n;
void ssm()
{
int minSum = 0 ,maxSum = -200000 ,lIndex = 1,rIndex = 1 ,auxSum,aux_lIndex = 1;
for (int i = 1 ; i < n ; i++)
{
// actualizez daca e cazul minSum comparandu-l cu sum[i-1]
if(sum[i-1] < minSum)
{
minSum = sum[i-1];
aux_lIndex = i+1;
}
//creez sum[i]
sum[i] = sum[i-1] + sum[i];
// vad ce subsir care se termina in i are suma maxima
auxSum = sum[i] - minSum;
// compar subsirul cu maxSum, eventual schimband indicii
if(auxSum > maxSum)
{
maxSum = auxSum;
rIndex = i + 1;
lIndex = aux_lIndex;
}
}
//cout<<maxSum<<" "<<lIndex<<" "<<rIndex;
g<<maxSum<<" "<<lIndex<<" "<<rIndex;
}
int main()
{
f>>n;
for(int i = 0 ; i < n ;i++)
f>>sum[i];
f.close();
ssm();
g.close();
}