# PBinfo #2720 – bucketsort – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Metoda Bucket Sort constă în distribuirea elementelor în mai multe grupe, numite “bucket-uri”. Apoi fiecare bucket este sortat individual folosind un algoritm de sortare oarecare.

Cerința
Se dă un şir cu n numere naturale ce trebuie sortat în funcţie de d. Dacă d este 1, şirul se va sorta descrescător, iar dacă este 0, se va sorta crescător.

Date de intrare
Fișierul de intrare bucketsort.in conține pe prima linie numărul n, iar pe a doua linie n numere naturale separate prin spații, iar pe a treia linie se va afla d.

Date de ieșire
Fișierul de ieșire bucketsort.out va conține pe prima linie şirul sortat în funcţie de d.

Restricții și precizări

n ≤ 10.000
toate numerele ≤ 100.000.000
d=0 pentru 50% din teste
d=1 pentru 50% din teste

Exemplu 1:
bucketsort.in

5
10 90 5 6 101
0
bucketsort.out

5 6 10 90 101 
Explicație
Deoarece d este 0, şirul se sortează crescător

Exemplu 2:
bucketsort.in

5
10 90 5 6 101
1
bucketsort.out

101 90 10 6 5 
Explicație
Deoarece d este 1, şirul se sortează descrescător

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
ifstream in("bucketsort.in");
ofstream out("bucketsort.out");
int v[10001], n, c;
bool desc(int a,int b){
    return a > b;
}
int main() {
    in >> n;
    for (int i = 1; i <= n; i++) in >> v[i];
    in >> c;
    if (c == 0) sort(v + 1, v + n + 1);
    else sort(v + 1, v + n + 1, desc);
    for (int i = 1; i <= n; i++) out << v[i] << " ";
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/2720)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/2720/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-2720/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
