Pagini recente » Cod sursa (job #2809809) | Cod sursa (job #153686) | Cod sursa (job #2699458) | Cod sursa (job #779162) | Cod sursa (job #3270223)
//
// Created by Cosmin Dumitru on 22.01.2025.
//
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("buline.in");
ofstream cout("buline.out");
int n,nr,semn,sum;
vector<int> v(1);
int main() {
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> nr >> semn;
if (!semn)
nr *=-1;
sum+=nr;
v.push_back(nr);
}
int max_sum = v[1], csum = v[1],
start[2] = {1,1}, end[] = {1,1}, temp_start = 1,
min_sum = v[1];
for (int i = 2; i <=n; ++i) {
if (csum +v[i]>v[i]){
csum+=v[i];
}else{
temp_start = i;
csum = v[i];
}
if (csum > max_sum) {
max_sum = csum;
start[0] = temp_start;
end[0] = i;
}
}
csum = v[1];
for (int i = 2; i <=n; ++i) {
if(csum+v[i]<v[i]){
csum+=v[i];
}else{
temp_start = i;
csum = v[i];
}
if (csum<min_sum){
min_sum = csum;
start[1] = temp_start;
end[1] = i;
}
}
if (max_sum>sum-min_sum){
cout << max_sum<<' ' << start[0] <<' ' << end[0]-start[0]+1;
}else{
cout << sum-min_sum<<' ' << end[1]+1 <<' ' <<n-start[1]+end[1]-1;
}
return 0;
}