am postat functia care rezolva.. gaseste cineva vreo greseala ? ..sau poate e ideea proasta..
// tmp = numitorul probabilitatii ; p0 = cat pariaza Petrica.
// optimele se retin in prob si in p[0]
int n, s[NMAX], p[NMAX], prob;
void solve()
{
int p0, i, tmp;
for(p0 = 0, tmp = 1; p0 <= *s; p0++, tmp = 2)
{
for(i = 1; i < n && tmp; i++)
if(s[i] + p[i] >= *s + p0)
if(s[i] - p[i] >= *s + p0)
tmp = 0;
else
tmp *= 2;
if(tmp && (tmp < prob || !prob))
prob = tmp, *p = p0;
}
}
PS: nu ma asteptam sa iau 100, ca 2^300 nu intra in int.. dar macar 40 puncte, ca zice "Pentru 40% din teste N <= 17"