Pagini recente » Cod sursa (job #2694659) | Cod sursa (job #3227578) | Cod sursa (job #3186466) | Cod sursa (job #2191302) | Cod sursa (job #1965515)
#include <iostream>
#include <cstdio>
#include <cctype>
#include <fstream>
using namespace std;
int cursor;
const int SZ=1000;
char s[SZ];
FILE*f;
void init(){
f=fopen("ssm.in","r");
cursor=0;
fread(s,1,SZ,f);
}
void advance_cursor(){
cursor++;
if(cursor==SZ){
cursor=0;
fread(s,1,SZ,f);
}
}
int read_next_int(){
bool ok=false;
while(!isdigit(s[cursor])){
if(s[cursor]=='-')
ok=true;
advance_cursor();
}
int x=0;
while(isdigit(s[cursor])){
x=x*10+s[cursor]-'0';
advance_cursor();
}
if(ok==true)
return -x;
else
return x;
}
int sum[6000005];
struct el{
int val,poz;
};
el sum2[6000005];
int main()
{
init();
ofstream cout("ssm.out");
int n=read_next_int();
int x,max=0,a=0,b=0;
for(int i=1;i<=n;i++){
x=read_next_int();
sum[i]=sum[i-1]+x;
if(sum[i]<sum2[i-1].val){
sum2[i].val=sum[i];
sum2[i].poz=i;
}
else{
sum2[i].val=sum2[i-1].val;
sum2[i].poz=sum2[i-1].poz;
}
}
for(int i=1;i<=n;i++){
if(sum[i]-sum2[i-1].val>max){
max=sum[i]-sum2[i-1].val;
a=sum2[i-1].poz;
b=i;
}
}
cout<<max<<" "<<a+1<<" "<<b;
return 0;
}