Pagini recente » Cod sursa (job #697197) | Cod sursa (job #1257237) | Cod sursa (job #615813) | Cod sursa (job #409954) | Cod sursa (job #2757150)
#include <fstream>
using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
const int N = 10000;
int v[N+5];
int main()
{
int n, stot = 0;
bool semn;
fin >> n;
for(int i = 1; i <= n; i++)
{
fin >> v[i] >> semn;
if(semn == 0)
v[i] = - v[i];
stot += v[i];
}
int sc, scmin, scmax, ic, stmin, drmin, stmax, drmax;
sc = scmax = v[1];
ic = stmax = drmax = 1;
for(int i = 2; i <= n; i++)
{
if(sc + v[i] < v[i])
{
sc = v[i];
ic = i;
}
else
sc += v[i];
if(sc > scmax)
{
scmax = sc;
stmax = ic;
drmax = i;
}
}
ic = stmin = drmin = 1;
sc = scmin = v[1];
for(int i = 2; i <= n; i++)
{
if(sc + v[i] >= v[i])
{
sc = v[i];
ic = i;
}
else
sc += v[i];
if(sc < scmin)
{
scmin = sc;
stmin = ic;
drmin = i;
}
}
int scirc = stot - scmin;
if(scirc > scmax)
{
fout << scirc << " " << drmin + 1 << " " << n - (drmin - stmin + 1) << "\n";
}
else
{
fout << scmax << " " << stmax << " " << drmax - stmax + 1 << "\n";
}
return 0;
}