Pagini recente » Cod sursa (job #1379721) | Cod sursa (job #1455164) | Cod sursa (job #831122) | Cod sursa (job #2696808) | Cod sursa (job #1538692)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
const int N_MAX = 6000003;
#define foreach(i,n) for(int i = 1 ; i <= n ; i ++)
ifstream in("ssm.in");
ofstream out("ssm.out");
struct element
{
int value,index,lindex;
int maxSum;
};
int sum[N_MAX];
element v[N_MAX];
int main()
{
int n,x;
in>>n;
sum[0] = 0;
foreach(i,n)
{
in>>v[i].value;
v[i].index = i;
v[i].lindex = i;
v[i].maxSum = v[i].value;
sum[i] = sum[i-1] + v[i].value;
}
int minimum_sum_index = 1;
int minimum_sum = sum[1];
for(int i = 2 ; i <= n ; i++)
{
v[i].maxSum = sum[i] - minimum_sum;
v[i].lindex = minimum_sum_index;
if( sum[i] < minimum_sum)
{
minimum_sum = sum[i];
minimum_sum_index = i;
}
}
int position_max_sum = 1;
int value_max_sum = v[1].value;
for(int i = 2 ; i <= n ; i++)
if (value_max_sum < v[i].maxSum)
{
value_max_sum = v[i].maxSum;
position_max_sum = i;
}
out<<value_max_sum<<" "<<v[position_max_sum].lindex+1<<" "<<position_max_sum;
return 0;
}