Salut!
Am avut recent niste dificultati la una din problemele din arhiva in care era nevoie de putine optimizari pentru a obtine 100 de puncte.
yo=(int)p[ii]-D;
while(yo>p[left])
left++;
pu=p[ii]+D;
while(pu>=p[right]&&right<=N)
right++;
P[] este
unsigned int,
D este
int,
yo este
int,
pu este
int.
Fragmentul de mai sus nu merge(ia 0 puncte) desi se garanteaza ca p[ii] si D <(1<<31) )
In schimb declar
yo ca fiind
long long si fac si conversia in
long long iau 95(pe
pu il las
int):
yo=(long long)p[ii]-D;
while(yo>p[left])
left++;
pu=p[ii]+D;
while(pu>=p[right]&&right<=N)
right++;
Iar daca declar vectorul
int si
las yo ca
int iau 100.
Vreau sa stiu in primul rand cum as putea sa fac conversia la prima bucata de cod ca sa nu mai am probleme pe viitor.
Tinand cont ca iau 0 puncte e clar ca doar conversia e gresita pentru ca nici pe cazuri simple nu da bine.
Multumesc anticipat pentru raspunsuri!