Pagini recente » Cod sursa (job #1778540) | Cod sursa (job #1506761) | Cod sursa (job #2557715) | Cod sursa (job #2347060) | Cod sursa (job #2648437)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
void ssm2(int n,int tomb[],int &sum
,int &kezdindex,int &vegindex) {
int *d = new int[n];
d[0] = tomb[0];
for(int i=1; i<n; i++) {
d[i] = max(tomb[i],d[i-1]+tomb[i]);
}
sum = d[0], kezdindex = vegindex = 0;
for(int i=1; i<n; i++) {
if(sum < d[i]) {
sum = d[i];
vegindex = i;
}
}
int akt = 0;
for(int i=vegindex; i>=0; i--) {
akt += tomb[i];
if(akt == sum) {
kezdindex = i;
}
}
delete[] d;
}
void ssm(int n,int tomb[],int &sum
,int &kezdindex,int &vegindex) {
sum = tomb[0];
kezdindex = vegindex = 0;
int osszeg = 0;
for(int i=0; i<n; i++) {
for(int j=i; j<n; j++) {
osszeg = osszeg + tomb[j];
if(osszeg > sum) {
sum = osszeg;
kezdindex = i;
vegindex = j;
}
}
osszeg = 0;
}
}
int main()
{
int n, sum, kezdindex, vegindex;
ifstream be("ssm.in");
ofstream ki("ssm.out");
be >> n;
int* tomb = new int[n];
for(int i=0; i<n; i++) {
be >> tomb[i];
}
ssm2(n,tomb, sum, kezdindex, vegindex);
ki << sum << " " << kezdindex+1
<< " " << vegindex+1 << endl;
delete[] tomb;
}