Pagini recente » Cod sursa (job #2976836) | Cod sursa (job #2610570) | Cod sursa (job #1254516) | Cod sursa (job #1866842) | Cod sursa (job #3238046)
#include <bits/stdc++.h>
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
int n, x, curent_max, curent_min, smax, smin;
int l_max, l_min, r_max, r_min, L_max, L_min, R_max, R_min;
bool culoare;
int prelucrare()
{
if(culoare)
return x;
else
return -x;
}
long long total;
int main()
{
f >> n >> x >> culoare;
x = prelucrare();
total = x;
curent_max = curent_min = smax = smin = x;
l_min = r_min = l_min = l_max = L_min = L_max = R_min = R_max = 1;
for(int i=2; i<=n; i++)
{
f >> x>> culoare;
x = prelucrare();
if(curent_max + x > x)
curent_max += x, r_max++;
else
curent_max = x, l_max = r_max = i;
if(curent_min + x < x)
curent_min += x, r_min++;
else
curent_min = x, l_min = r_min = i;
if(curent_max > smax)
smax = curent_max, L_max = l_max, R_max = r_max;
if(curent_min < smin)
smin = curent_min, L_min = l_min, R_min = r_min;
total += x;
}
if(smax > (total - smin))
g << smax <<" "<<L_max <<" "<<(R_max - L_max + 1);
else
g <<total - smin <<" "<<R_min+1<<" "<<(n-R_min + L_min-1);
}