Diferente pentru multe-smenuri-de-programare-in-cc-si-nu-numai intre reviziile #20 si #21

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.
p(pre). {@freopen("in.txt", "r", stdin);@}
{@freopen("out.txt", "w", stdout);@}
== code(c) |
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?
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;@}
{@}@}
== 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;
}
==
Procedura de mai sus face cautarea binara folosind puteri a lui $2$ in ordine descrescatoare, practic incerc sa determin fiecare bit al rezultatului.

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.