Pagini recente » Cod sursa (job #1055534) | Cod sursa (job #183413) | Cod sursa (job #1639774) | Cod sursa (job #1768443) | Cod sursa (job #1526686)
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
const int Nmax = 6000005;
const int INF = 2000000000;
int iMax=1, jMax, sMax, Min;
int D[Nmax], N;
int sum[Nmax], best[Nmax];
bool poz;
void citire()
{
ifstream f("ssm.in");
poz = false;
f >> N;
for(int i = 1; i <= N; i ++)
{
f >> D[i];
if(D[i] >= 0)
{
poz = true;
}
}
f.close();
}
void solve()
{
sum[0] = 0;
for(int i = 1; i <= N; i ++)
{
sum[i] = sum[i-1]+D[i];
}
Min = sum[0];
int iMin = 1;
sMax = -INF;
for(int i = 1; i <= N; i ++)
{
best[i] = sum[i] - Min;
if(sum[i] < Min)
{
Min = sum[i];
iMin = i+1;
}
if(best[i] > sMax)
{
sMax = best[i];
jMax = i;
iMax = iMin;
}
}
}
void print()
{
ofstream g("ssm.out");
g << sMax << " " << iMax << " " << jMax;
g.close();
}
int main()
{
citire();
if(poz)
{
solve();
}
else
{
int Min = -INF;
for(int i = 1; i <= N; i ++)
{
if(D[i] > Min)
{
Min = D[i];
iMax = i;
jMax = i;
sMax = D[i];
}
}
}
print();
return 0;
}