Pagini recente » Cod sursa (job #883377) | Cod sursa (job #1456625) | Cod sursa (job #613124) | Cod sursa (job #1546971) | Cod sursa (job #1479830)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ssm.in",ios::in);
ofstream g("ssm.out",ios::out);
int v[7000001],n;
void ssm()
{
int sum[7000001] , minSum = 20000000 ,maxSum = -20000000 ,lIndex = 1,rIndex = 1 ,auxSum,aux_lIndex = 1;
sum[0] = v[0];
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] + v[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>>v[i];
f.close();
ssm();
g.close();
}