Pagini recente » Cod sursa (job #3263140) | Cod sursa (job #3322981) | Cod sursa (job #2145853) | Monitorul de evaluare | Cod sursa (job #3308680)
#include <fstream>
using namespace std;
ifstream cin ("buline.in");
ofstream cout ("buline.out");
int v[400001];
struct sumitizare{
int val = 0;
int p = 0;
int l = 0;
};
sumitizare s;
int main()
{
int n, i, p = 0, l = 0, c, s_max = -10001;
cin >> n;
for (i = 1;i <= n;i++)
{
cin >> v[i] >> c;
if (c == 0)
{
v[i] = 0 - v[i];
}
}
for (i = n + 1;i <= 2 * n - 1;i++)
{
v[i] = v[i - n];
}
s.p = 1;
for (i = 1;i <= 2 * n - 1;i++)
{
if (s.val + v[i] >= v[i] && s.l < n)
{
s.val+= v[i];
s.l++;
if (s.l == 1)
{
s.p = i;
}
if (s.val > s_max)
{
s_max = s.val;
p = s.p;
l = s.l;
}
}
else if (s.val + v[i] < v[i] || s.l == n)
{
s.val = v[i];
s.p = i;
s.l = 1;
if (s.val > s_max)
{
s_max = s.val;
p = s.p;
l = s.l;
}
}
}
cout << s_max << " " << p << " " << l;
return 0;
}