Pagini recente » Cod sursa (job #1535092) | Cod sursa (job #2619124) | Cod sursa (job #1083595) | Cod sursa (job #1486619) | Cod sursa (job #1334406)
#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){
int sum = 0;
for (j = i; j < SIZE; ++j){
sum += data[j];
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;
}