Pagini recente » Cod sursa (job #562950) | Cod sursa (job #2023143) | Cod sursa (job #203624) | Rating m-n-iordan (NectarieIordan) | Cod sursa (job #1247484)
//
// main.cpp
// ssm
//
// Created by Andru Zuniga on 22.10.2014.
// Copyright (c) 2014 Zuniga Andru Felipe. All rights reserved.
//
#include <fstream>
using namespace std;
struct Suma {
int valoare;
long inceput;
long sfarsit;
};
Suma sumaMaxima(int sir[], long lungime) {
int sirDeSume[lungime], sumaMax, sumaMin;
long pozSumaMax = 0, pozSumaMin = 0;
sirDeSume[0] = sir[0];
sumaMax = sirDeSume[0];
sumaMin = sirDeSume[0];
for (long i = 1; i < lungime; i++) {
sirDeSume[i] = sirDeSume[i - 1] + sir[i];
}
for (long i = lungime - 1; i >= 0; i--) {
if (sumaMax < sirDeSume[i]) {
sumaMax = sirDeSume[i];
pozSumaMax = i;
}
if (sumaMin > sirDeSume[i]) {
sumaMin = sirDeSume[i];
pozSumaMin = i;
}
}
Suma suma;
suma.valoare = sumaMax - sumaMin;
suma.inceput = pozSumaMin < pozSumaMax ? pozSumaMin + 2 : 1;
suma.sfarsit = pozSumaMax + 1;
return suma;
}
int main(int argc, const char * argv[]) {
ifstream f;
f.open("ssm.in");
long n;
f >> n;
int sir[n];
for (int i = 0; i < n; i++) {
f >> sir[i];
}
f.close();
ofstream g;
g.open("ssm.out");
Suma sumaMax = sumaMaxima(sir, n);
g << sumaMax.valoare << " " << sumaMax.inceput << " " << sumaMax.sfarsit;
g.close();
return 0;
}