Pagini recente » Cod sursa (job #2770649) | Cod sursa (job #26389) | Cod sursa (job #376343) | Cod sursa (job #2358453) | Cod sursa (job #2733272)
#include <fstream>
using namespace std;
const int NMAX = 2e5;
ifstream cin("buline.in");
ofstream cout("buline.out");
int v[NMAX + 5];
struct SUM
{
int val;
int st;
int dr;
SUM()
{
val = 0;
st = 1;
}
};
SUM scmin, scmax;
int maxi = 0, mini = ~(1 << 31), stmax, stmin, drmax, drmin;
int sum;
int main()
{
int n, nr, i;
bool c;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> nr >> c;
nr = (c == 1) ? nr : -nr;
sum += nr;
if (scmax.val + nr < nr)
{
scmax.val = nr;
scmax.st = i;
}
else
scmax.val += nr;
if (scmax.val > maxi)
{
maxi = scmax.val;
stmax = scmax.st;
drmax = i;
}
//-------------------------------------//
if (scmin.val + nr > nr)
{
scmin.val = nr;
scmin.st = i;
}
else
scmin.val += nr;
if (scmin.val < mini)
{
mini = scmin.val;
stmin = scmin.st;
drmin = i;
}
}
if (sum - mini < maxi)
cout << maxi << ' ' << stmax << ' ' << drmax - stmax + 1;
else
cout << sum - mini << ' ' << drmin + 1 << ' ' << n - (drmin - stmin + 1);
}