Pagini recente » Cod sursa (job #2539289) | Cod sursa (job #2194213) | Cod sursa (job #1670349) | Cod sursa (job #1673737) | Cod sursa (job #3261895)
#include <fstream>
#include <climits>
using namespace std;
const int N = 6e6;
int main()
{
ifstream in("ssm.in");
ofstream out("ssm.out");
int n;
in >> n;
int ss_max = INT_MIN;
int st_max = 0, dr_max = 0, st, ss_c = 0;;
for (int dr = 0; dr < n; dr++)
{
///calculam ss_c = cea mai mare suma pe care o pot avea secv. cu ultimul elem. pe poz dr
int x_i;
in >> x_i;
if (x_i > ss_c + x_i)///echivalent cu if (ss_c < 0)
{
ss_c = x_i;
st = dr;///secv. optima e formata dintr-un singur element
}
else
{
ss_c += x_i;
}
if (ss_c > ss_max)
{
ss_max = ss_c;
st_max = st;
dr_max = dr;
}
}
st_max++;
dr_max++;
out << ss_max << " " << st_max << " " << dr_max << "\n";
in.close();
out.close();
return 0;
}