Pagini recente » Monitorul de evaluare | Diferente pentru problema/buline intre reviziile 11 si 9 | Cod sursa (job #3324400)
#include <fstream>
using namespace std;
#define int long long
ifstream in("buline.in");
ofstream out("buline.out");
int n;
int v[400005];
signed main()
{
in>>n;
int x, y;
for(int i = 1; i<=n; i++)
{
in>>x>>y;
if(y == 0)
{
v[i] = -x;
}
else
{
v[i] = x;
}
}
for(int i = n + 1; i<=2*n; i++)
{
v[i] = v[i - n];
}
int sum = 0;
int start = 1;
int ans = -2e9;
int st, dr;
for(int i = 1; i<=2*n; i++)
{
if(sum < 0)
{
sum = 0;
start = i;
}
sum += v[i];
if(i - n == start)
{
sum -= v[start];
start++;
}
if(sum > ans)
{
ans = sum;
st = start;
dr = i;
}
}
out<<ans<<" "<<st<<" "<<dr - st + 1;
return 0;
}