Pagini recente » Cod sursa (job #865207) | Cod sursa (job #1483599) | Cod sursa (job #941019) | Cod sursa (job #3301654) | Cod sursa (job #2648435)
#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 = tomb[vegindex];
for(kezdindex=vegindex; akt!=sum; kezdindex--) {
akt += tomb[kezdindex-1];
}
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;
}