Pagini recente » Cod sursa (job #2841785) | Cod sursa (job #751518) | Cod sursa (job #1606751) | Cod sursa (job #2236090) | Cod sursa (job #2981631)
#include <iostream>
#include <fstream>
#include <vector>
#include <climits>
using namespace std;
ifstream fin("ssm.in");
ofstream fout("ssm.out");
int n;
vector<int>sp;
int main()
{
sp.push_back(0);
fin >> n;
for(int i = 1; i <= n; i++)
{
int x;
fin >> x;
sp.push_back(sp[i-1]+x);
}
int minim = INT_MAX, maxim = INT_MIN;
int ind1 = 0, ind2 = 0;
int minim2 = INT_MAX, maxim2 = INT_MIN;
int ind3 = 0, ind4 = 0;
for(int i = 0; i <= n; i++)
{
if(sp[i] > maxim)
{
maxim = sp[i];
ind2 = i;
}
if(sp[i] < minim)
{
minim = sp[i];
ind1 = i;
}
}
for(int i = 0; i < ind2; i++)
{
if(sp[i] < minim2)
{
minim2 = sp[i];
ind3 = i;
}
}
for(int i = ind1+1; i <= n; i++)
{
if(sp[i] > maxim2)
{
maxim2 = sp[i];
ind4 = i;
}
}
int s1 = maxim2-minim;
int s2 = maxim-minim2;
if(s1 > s2)
{
fout << s1 << " " << ind1+1 << " " << ind4;
}
else if(s1 < s2)
{
fout << s2 << " " << ind3+1 << " " << ind2;
}
else
{
if(ind1 < ind3)
fout << s1 << " " << ind1+1 << " " << ind4;
else if(ind1 > ind3)
fout << s2 << " " << ind3+1 << " " << ind2;
else
{
if(ind4-ind1 < ind2-ind3)
fout << s1 << " " << ind1+1 << " " << ind4;
else
fout << s2 << " " << ind3+1 << " " << ind2;
}
}
return 0;
}