Pagini recente » oji_sim2 | Cod sursa (job #2238501) | Cod sursa (job #1334398)
#include <fstream>
#include <vector>
#include <numeric>
using namespace std;
void read(vector<int>& out_data){
ifstream f("ssm.in");
int N, x;
f >> N;
for (int i = 0; i < N; i++){
f >> x;
out_data.push_back(x);
}
f.close();
}
void write(int maxSum, int minIdx, int maxIdx){
ofstream g("ssm.out");
g << maxSum << " " << minIdx << " " << maxIdx << std::endl;
g.close();
}
void computeMaxSum(const vector<int>& data,int& out_maxSum, int& out_minIdx, int& out_maxIdx){
unsigned i, j;
const unsigned SIZE = data.size();
out_maxSum = data[0];
out_minIdx = 0;
out_maxIdx = 0;
for (i = 0; i < SIZE - 1; ++i){
for (j = i + 1; j < SIZE; ++j){
int sum = accumulate(data.begin()+i, data.begin()+j+1, 0 );
if (sum > out_maxSum){
out_maxSum = sum;
out_minIdx = i;
out_maxIdx = j;
}
}
}
}
int main(){
vector<int> data;
int maxSum, minIdx, maxIdx;
read(data);
computeMaxSum(data, maxSum, minIdx, maxIdx);
write(maxSum, minIdx+1, maxIdx+1);
return 0;
}