Pagini recente » Cod sursa (job #1820858) | Cod sursa (job #2453418) | Cod sursa (job #444238) | Cod sursa (job #2076712) | Cod sursa (job #767732)
Cod sursa(job #767732)
#include <fstream>
#include <iostream>
using namespace std;
long long N, mare = 1 - (1 << 31), poz, lg = 1;
long long v[400005];
void Citire () {
long long a;
ifstream fin ("buline.in");
fin >> N;
for (long long 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 (long long i = 0; i < N; i++)
v[i + N] = v[i];
long long 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;
}