Pagini recente » Cod sursa (job #1826857) | Cod sursa (job #730329) | Cod sursa (job #1666253) | Cod sursa (job #1115029) | Cod sursa (job #1965570)
#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[5555555];
struct el{
int val,poz;
};
el sum2[5555555];
int main()
{
init();
ofstream cout("ssm.out");
int n=read_next_int();
int x,max=-99999999,a=0,b=0,poza;
long long min=999999999999999;
for(int i=1;i<=n;i++){
x=read_next_int();
sum[i]=sum[i-1]+x;
if(sum[i]<min){
min=sum[i];
poza=i;
}
sum2[i].val=min;
sum2[i].poz=poza;
}
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;
}