Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2016-07-09 08:29:19.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:ultimulcartus.in, ultimulcartus.outSursăJunior Challenge 2016
AutorAndrei ConstantinescuAdăugată deJuniorChallenge2015JuniorChallenge2016 JuniorChallenge2015
Timp execuţie pe test0.025 secLimită de memorie65536 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Ultimul Cartus

Spoiler alert! Dupa moartea lui Miclovan viata a devenit monotona si absenta, comisarul Roman este pus in situatia de a il prinde pe Semaca, pe care justitia l-a achitat din lipsa de probe.
Astfel, Roman ajunge in fata unei arhive vechi, plina cu N dosare (N putere a lui 2), aranjate intr-o ordine aleatorie. Un prim pas in analizarea acestora il reprezinta ordonarea lor alfabetica dupa titlu. Vom considera, pentru simplitate, ca titlurile celor N dosare sunt numere naturale distincte, cuprinse intre 1 si N (altfel spus, ordinea dosarelor reprezinta o permutare a numerelor de la 1 la N). Deoarece numarul dosarelor este destul de mare, Roman propune o abordare sistematica, pe care o va duce la bun sfarsit cu ajutorul subordonatilor sai. Aceasta poate fi descrisa prin urmatorul algoritm:

const int NMAX = 1000000000;

int N;
int p[NMAX + 1]; // = permutarea data

int ops;
void bubble(int gap) {
    bool ok = true;
    while (ok) {
        ok = false;
        for (int i = 1; i <= N - gap; ++ i)
            if (p[i] > p[i + gap]) {
                swap(p[i], p[i + gap]);
                ++ ops;
                ok = true;
            }
    }
}

void bubblesort() {
    int gap = N;
    while (gap) {
        bubble(gap);
        gap /= 2;
    }
}

Date de intrare

Fişierul de intrare ultimulcartus.in ...

Date de ieşire

În fişierul de ieşire ultimulcartus.out ...

Restricţii

  • ... ≤ ... ≤ ...

Exemplu

ultimulcartus.inultimulcartus.out
This is some
text written on
multiple lines.
This is another
text written on
multiple lines.

Explicaţie

...

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?