Pagini recente » Cod sursa (job #509072) | Cod sursa (job #40742) | Cod sursa (job #2451929) | Cod sursa (job #2565392) | Cod sursa (job #3242920)
#include <iostream>
#include <fstream>
#include <climits>
std::ifstream bem("ssm.in");
int n;
std::ofstream kim("ssm.out");
int tomb[6000001] = {};
void elso(){
for(int i = 1; i <= n; i++)
bem >> tomb[i];
int legnagyobb = INT_MIN, legnagyobbK = 0, legnagyobbV = 0;
for(int i = 1; i <= n; i++){
for(int j = i; j <= n; j++){
int s = 0;
for(int k = i; k <= j; k++)
s += tomb[k];
if(s > legnagyobb){
legnagyobb = s;
legnagyobbK = i;
legnagyobbV = j;
}
}
}
kim << legnagyobb << " " << legnagyobbK << " " << legnagyobbV << "\n";
}
void masodik(){
for(int i = 1; i <= n; i++)
bem >> tomb[i];
int legnagyobb = INT_MIN, legnagyobbK = 0, legnagyobbV = 0;
for(int i = 1; i <= n; i++){
int s = 0;
for(int j = i; j <= n; j++){
s += tomb[j];
if(s > legnagyobb){
legnagyobb = s;
legnagyobbK = i;
legnagyobbV = j;
}
}
}
kim << legnagyobb << " " << legnagyobbK << " " << legnagyobbV << "\n";
}
void harmadik(){
for(int i = 1; i <= n; i++){
int szam;
bem >> szam;
tomb[i] = tomb[i-1] + szam;
}
int maxIndexK = 1, maxIndexV = 1;
for(int i = 1; i <= n; i++){
for(int j = 0; j < i-1; j++){
if(tomb[i] - tomb[j] > tomb[maxIndexV] - tomb[maxIndexK]){
maxIndexK = j;
maxIndexV = i;
}
}
}
kim << tomb[maxIndexV] - tomb[maxIndexK] << " " << maxIndexK + 1 << " " << maxIndexV << "\n";
}
// ???
void negyedik(){
int kezdet = 0, vege = 0;
for(int i = 1; i <= n; i++){
int szam;
bem >> szam;
tomb[i] = tomb[i-1] + szam;
}
int minReszOssz = INT_MAX;
int jMinReszOssz = -1;
for(int i = 1; i <= n; i++){
if(minReszOssz < tomb[i-1]){
minReszOssz = tomb[i-1];
kezdet = i;
}
if(tomb[i] - minReszOssz > jMinReszOssz){
jMinReszOssz = tomb[i] - minReszOssz;
vege = i;
}
}
kim << tomb[vege] - tomb[kezdet] << " " << kezdet << " " << vege << "\n";
}
void otodik(){
int best = 0, elem, most = 1, max = 0, kezdet, vege;
for(int i = 1; i <= n; i++){
bem >> elem;
if(best + elem >= elem)
best = best + elem;
else{
best = elem;
most = i;
}
if(best > max){
max = best;
kezdet = most;
vege = i;
}
}
kim << max << " " << kezdet << " " << vege << "\n";
}
int main(){
bem >> n;
tomb[0] = 0;
otodik();
bem.close();
kim.close();
return 0;
}