Pagini recente » Cod sursa (job #1231386) | Cod sursa (job #1721207) | Cod sursa (job #2999882) | Cod sursa (job #3128119) | Cod sursa (job #767728)
Cod sursa(job #767728)
#include <fstream>
#include <iostream>
using namespace std;
int N, mare = 1 - (1 << 31), 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 ? 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 < p + 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;
}