Pagini recente » Cod sursa (job #1634211) | Cod sursa (job #350913) | Cod sursa (job #908180) | Cod sursa (job #714537) | Cod sursa (job #2069587)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
int main()
{
deque<int>coada;
int n, v[100], i, r1, pozitie, lungime, x;
f >> n;
for (i = 1; i <= n; i++) {
f >> v[i] >> x;
if (x == 0)v[i] = v[i] * -1;
v[i + n] = v[i];
}
for (i = 1; i <= 2 * n; i++)v[i] = v[i] + v[i - 1];
for (i = 1; i <= n; i++) {
while (coada.size() && v[coada.back()] > v[i])
coada.pop_back();
coada.push_back(i);
if (coada.front() == i - n)
coada.pop_front();
if (v[i] - v[coada.front()] > r1) {
r1 = v[i] - v[coada.front()];
pozitie = coada.front() + 1;
lungime = i - pozitie + 1;
}
}
g << r1 << " " << pozitie << " " << lungime;
//for (i = 1; i <= 2 * n; i++)g << v[i]<<" ";
f.close();
g.close();
return 0;
}