Pagini recente » Cod sursa (job #1498809) | Cod sursa (job #179868) | Cod sursa (job #1728544) | Cod sursa (job #81998) | Cod sursa (job #2116670)
#include <fstream>
using namespace std;
int n, i, maxim, suma, sol1, p, L;
int culoare, nr, s[400005], v[400005];
ifstream fin("buline.in");
ofstream fout("buline.out");
int main(){
fin>>n;
for(i=1;i<=n;i++){
fin>>nr>>culoare;
if(culoare == 0)
s[i] = nr*(-1);
else
s[i] = nr;
if(i!=n)
s[i+n] = s[i];
}
maxim = suma = s[1];
p = L = 1;
for(i=2;i<2*n;i++){
if(suma >= 0)
suma += s[i];
else
suma = s[i], p = i;
if(suma > maxim && i-p+1 <= n){
maxim = suma;
sol1 = p;
L = i-p+1;
if(sol1 > n)
sol1-=n;
}
}
for(i=1;i<2*n;i++)
v[i] = s[2*n-i];
suma = v[1];
p = 1;
for(i=2;i<2*n;i++){
if(suma >= 0)
suma += v[i];
else
suma = v[i], p = i;
if(suma > maxim && i-p+1 <= n){
maxim = suma;
sol1 = p;
L = i-p+1;
if(sol1 > n)
sol1-=n;
}
}
fout<<maxim<<" "<<sol1<<" "<<L;
return 0;
}