Pagini recente » Cod sursa (job #1145262) | Cod sursa (job #1930995) | Cod sursa (job #1586775) | Cod sursa (job #1666652) | Cod sursa (job #2118076)
#include<cstdio>
#include<climits>
using namespace std;
const int INF = INT_MAX, DIM = 50000000;
int cursor = DIM - 1;
char buffer[DIM];
inline void read(int &x){
int sign = 1;
while(!(buffer[cursor] >= '0' and buffer[cursor] <= '9')){
if(buffer[cursor] == '-')
sign = -1;
if(++cursor == DIM){
cursor = 0;
fread(buffer, 1, DIM, stdin);
}
}
x = 0;
while(buffer[cursor] >= '0' and buffer[cursor] <= '9'){
x = x * 10 + buffer[cursor] - '0';
if(++cursor == DIM){
cursor = 0;
fread(buffer, 1, DIM, stdin);
}
}
x *= sign;
}
int partialSum, leftIndex = 1, maxSum = -INF, index, number, numbersCount, leftForAnswer, rightForAnswer;
int main(){
freopen("ssm.in", "r", stdin);
freopen("ssm.out", "w", stdout);
read(numbersCount);
for(index = 1; index <= numbersCount; ++index){
read(number);
partialSum += number;
if(partialSum > maxSum){
maxSum = partialSum;
rightForAnswer = index;
leftForAnswer = leftIndex;
}
if(partialSum < 0){
partialSum = 0;
leftIndex = index + 1;
}
}
printf("%d %d %d\n",maxSum, leftForAnswer, rightForAnswer);
}