Pagini recente » Cod sursa (job #185794) | Cod sursa (job #1236202) | Monitorul de evaluare | Cod sursa (job #181171) | Cod sursa (job #3304542)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ssm.in");
ofstream g("ssm.out");
int main()
{
int n;
f >> n;
int spCrt = 0, spMin = 0, leftCrt = 0, inceputSecv = 1, finalSecv = 1, ssm = -2e9;
for (int i = 1; i <= n; i++)
{
int nr;
f >> nr;
spCrt += nr;
if (spCrt - spMin > ssm)
{
ssm = spCrt - spMin;
inceputSecv =
leftCrt + 1; /// ssm-ul este obtinut din spCrt - sp[leftCrt], deci leftCrt nu este inclus in ssm
finalSecv = i;
}
if (spCrt < spMin)
{
spMin = spCrt; ///spMin este numarul pe care il scadem, deci subsecventa mea va incepe de la i + 1
leftCrt = i;
}
}
g << ssm << ' ' << inceputSecv << ' ' << finalSecv;
return 0;
}