Pagini recente » Cod sursa (job #1187807) | Cod sursa (job #2897400) | Cod sursa (job #566754) | Cod sursa (job #492950) | Cod sursa (job #767741)
Cod sursa(job #767741)
#include <fstream>
#include <iostream>
using namespace std;
int N, mare = -20000, poz, lg = 1;
int v[400005];
void Citire () {
int a;
ifstream fin ("buline.in");
fin >> N;
for (int i = 0; i < N; i++)
{
fin >> v[i] >> a;
v[i] = (a == 1 ? v[i] : -v[i]);
if (mare < v[i]) mare = v[i], poz = i;
}
fin.close ();
}
void Business () {
for (int i = 0; i < N; i++)
v[i + N] = v[i];
int i, p, S;
for (i = 0; i < N; i++)
if (v[i] >= 0) break;
if (i == N) return;
S = v[i];
p = i++;
for (; i < min (p + N, N + N); i++)
{
S += v[i];
if (S > mare)
{
mare = S;
poz = p;
lg = i - p + 1;
}
if (S < 0)
{
while (v[i] < 0)
{
i++;
if (i >= N) return;
}
p = i;
S = v[i];
}
}
}
void Scriere () {
ofstream fout ("buline.out");
fout << mare << " " << poz + 1 << " " << lg;
fout.close ();
}
int main () {
Citire ();
Business ();
Scriere ();
return 0;
}