Pagini recente » Cod sursa (job #1209501) | Cod sursa (job #919441) | Cod sursa (job #2598860) | Cod sursa (job #2578661) | Cod sursa (job #2382282)
#include <fstream>
#include <iomanip>
#include <vector>
#include <algorithm>
using namespace std;
class SSM {
public:
void solve() {
read_input();
ssm();
}
private:
int n;
int *v;
void read_input() {
ifstream fin("ssm.in");
fin >> n;
v = new int[n];
for (int i = 1; i <= n; i++) {
fin >> v[i];
}
fin.close();
}
void ssm() {
ofstream fout("ssm.out");
int i, start = 1, final = 1;
int *dp = new int[n];
dp[1] = v[1];
int new_start, max = dp[1];
// dp[i] = max(v[i], dp[i - 1] + v[i])
for (i = 2; i <= n; i++) {
if (dp[i - 1] < 0) {
new_start = i;
}
dp[i] = v[i];
if (v[i] < dp[i - 1] + v[i]) {
dp[i] = dp[i - 1] + v[i];
}
if (max < dp[i]) {
max = dp[i];
final = i;
start = new_start;
}
}
fout << max << " " << start << " " << final << endl;
delete [] dp;
delete [] v;
fout.close();
}
};
int main() {
SSM solutie;
solutie.solve();
return 0;
}