Pagini recente » Cod sursa (job #2359108) | Cod sursa (job #3259316) | Cod sursa (job #1309402) | Infoarena cauta sponsori | Cod sursa (job #3242161)
//https://www.infoarena.ro/problema/buline
#include <fstream>
std::ifstream fin("buline.in");
std::ofstream fout("buline.out");
using namespace std;
int main()
{
long long int total = 0, n = 0, x = 0, semn = 0, maxim = -9223372036854775807, minim = 9223372036854775807, max_L = 0, max_R = 0, min_L = 0, min_R = 0, sum_min = 0, sum_max = 0, max_l = 1, max_r = 1, min_l = 1, min_r = 1;
fin >> n >> x >> semn;
if (!semn)
x *= -1;
maxim = x;
minim = x;
sum_max = x;
sum_min = x;
total += x;
for (int i = 1; i < n; ++i)
{
fin >> x >> semn;
if (!semn)
x *= -1;
if (sum_max + x > x)
{
sum_max += x;
max_r++;
}
else
{
sum_max = x;
max_l = i + 1;
max_r = i + 1;
}
if (sum_min + x < x)
{
sum_min += x;
min_r++;
}
else
{
sum_min = x;
min_l = i + 1;
min_r = i + 1;
}
if (sum_max > maxim)
{
maxim = sum_max;
max_L = max_l;
max_R = max_r;
}
if (sum_min < minim)
{
minim = sum_min;
min_L = min_l;
min_R = min_r;
}
total += x;
}
if (maxim > (total - minim))
fout << maxim << ' ' << max_L << ' ' << max_R - max_L + 1;
else
fout << total - minim << ' ' << min_R + 1 << ' ' << n - min_R + min_L - 1;
}