Pagini recente » Cod sursa (job #1618492) | Cod sursa (job #2453470) | Cod sursa (job #3304515) | Cod sursa (job #1120000) | Cod sursa (job #3304790)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
int n, v[400010];
int main()
{
fin >> n;
for(int i=1; i<=n; i++) {
int x, color; fin >> x >> color;
if(color == 0) v[i] = v[i + n] = -x;
else v[i] = v[i + n] = x;
}
int sumMax = v[1], poz = 1, lung = 1;
int sumCurent = v[1], st = 1;
for(int i=2; i<=2*n; i++) {
if(sumCurent + v[i] > v[i]) sumCurent += v[i];
else sumCurent = v[i], st = i;
if(sumCurent > sumMax) sumMax = sumCurent, poz = st, lung = i - st + 1;
else if(sumCurent == sumMax) {
if(st < poz) poz = st, lung = i - st + 1;
else if(st == poz && i - st + 1 < lung) lung = i - st + 1;
}
if(st > n) break;
if(i - st + 1 == n) break;
}
fout << sumMax << " " << poz << " " << lung;
return 0;
}