Nu aveti permisiuni pentru a descarca fisierul grader_test12.in
Diferente pentru multe-smenuri-de-programare-in-cc-si-nu-numai intre reviziile #21 si #20
Nu exista diferente intre titluri.
Diferente intre continut:
Folositi {@freopen()@} in loc de {@fopen()@} deoarece este mai comod, in special la concursurile in care intrare si iesirea sunt standard.
== code(c) | freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); ==
p(pre). {@freopen("in.txt", "r", stdin);@} {@freopen("out.txt", "w", stdout);@}
h2. Cautare binara (ideea originala de la Mihai Patrascu) Urmatorul cod este de aproximativ $4$ ori mai rapid (am testat cu cautare binara ca in manual) , mai usor de inteles, mai flexibil si mai scurt... ce ati putea dori mai mult?
== code(c) | int N, A[N]; int binary_search(int val) { int i, step; for (step = 1; step < N; step <<= 1); for (i = 0; step; step >>= 1) if (i + step < N && A[i + step] <= val) i += step; return i; } ==
p(pre). {@int N, A[N];@} {@int binary_search(int val)@} {@{@} {@ int i, step;@} {@ for (step = 1; step < N; step <<= 1);@} {@ for (i = 0; step; step >>= 1)@} {@ if (i + step < N && A[i + step] <= val)@} {@ i += step;@} {@ return i;@} {@}@}
Procedura de mai sus face cautarea binara folosind puteri a lui $2$ in ordine descrescatoare, practic incerc sa determin fiecare bit al rezultatului.