Pagini recente » Diferente pentru multe-smenuri-de-programare-in-cc-si-nu-numai intre reviziile 54 si 13 | Atasamentele paginii Profil andreiciocan | Diferente pentru utilizator/flamecata intre reviziile 3 si 4 | Diferente pentru utilizator/informatician28 intre reviziile 17 si 25 | Diferente pentru problema/ultimulcartus intre reviziile 4 si 5
Nu exista diferente intre titluri.
Diferente intre continut:
== include(page="template/taskheader" task_id="ultimulcartus") ==
*Spoiler alert!* Dupa moartea lui Miclovan viata a devenit monotona si absenta, comisarul Roman este pus in situatia de 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:
== code(cpp) |
const int NMAX = 1000000000;
int n;
int p[NMAX + 1];
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)
for (int i = 1; i <= N - gap; ++ i)
if (p[i] > p[i + gap]) {
swap(p[i], p[i + gap]);
++ ops;
}
void bubblesort() {
int gap = n;
int gap = N;
while (gap) {
bubble(gap);
gap /= 2;
Nu exista diferente intre securitate.
Topicul de forum nu a fost schimbat.