Pagini recente » Cod sursa (job #1791512) | Monitorul de evaluare | Cod sursa (job #3207591) | Cod sursa (job #273874) | Cod sursa (job #481109)
Cod sursa(job #481109)
#include<fstream>
#include<iostream>
#include<vector>
using namespace std;
int main()
{
long n,x,sum=0,maxsum=-60000;
fstream fin("ssm.in", fstream::in);
fstream fout("ssm.out", fstream::out);
vector<long> sums, bst;
pair<long, long> min;
pair<long, long> max;
fin>>n;
bst.reserve(n);
for(int i=0; i<n; ++i)
{
fin>>x;
//cout<<x<<" ";
sum+=x;
sums.push_back(sum);
}
//cout<<endl;
min.first=-1;
min.second=sums[0];
max.first=0;
maxsum=bst[0]=sums[0];
for(int i=0; i<n; ++i)
{
bst[i]=sums[i]-min.second;
if(sums[i-1]<min.second)
{
min.first=i;
min.second=sums[i-1];
}
//cout<<"("<<min.second<<" "<<bst[i]<<") ";
if(bst[i]>=maxsum)
{
max.first=min.first;
max.second=i;
maxsum=bst[i];
}
/*else if(bst[i]==maxsum)
{
if(i<.first)
{
max.first=min.first;
max.second=i;
maxsum=bst[i];
}
}*/
}
fout<<maxsum<<" "<<max.first+1<<" "<<max.second+1<<endl;
//cout<<endl<<maxsum<<" "<<max.first+1<<" "<<max.second+1<<endl;
fin.close();
fout.close();
return 0;
}