#2128
Definim o permutare dublă de ordin n ca fiind un șir format din primele 2n numere naturale nenule:
(a[1], a[2], ... , a[n], a[n+1], a[n+2], ... , a[2n]). Această permutare dublă este de trei ori în creștere, dacă sunt adevărate următoarele trei proprietăți:
n elemente este crescătoare: a[1]<a[2]< ... < a[n]n elemente este crescătoare: a[n+1]<a[n+2]< ... < a[2n]a[1]<a[n+1], a[2]<a[n+2], ... , a[n]<a[2n].Pentru simplificare în continuare permutarea dublă de trei ori în creștere se va numi permutare. Vom considera toate permutările de ordin n ordonate lexicografic, numerotate începând cu 1.
Există două tipuri de întrebări:
Să se răspundă corect la un set de întrebări.
OJI 2017, Clasele XI-XII
| Problema | Permutare2 | Operații I/O |
permutare2.in/permutare2.out
|
|---|---|---|---|
| Limita timp | 1.5 secunde | Limita memorie |
Total: 64 MB
/
Stivă 32 MB
|
| Id soluție | #62048294 | Utilizator | |
| Fișier | permutare2.cpp | Dimensiune | 4.58 KB |
| Data încărcării | 04 Ianuarie 2026, 22:30 | Scor/rezultat | 50 puncte |
permutare2.cpp: In function 'll countWays(int, int)': permutare2.cpp:19:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (i == 2 * N) ^ permutare2.cpp:20:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] return (j == N) ? 1 : 0; ^ permutare2.cpp:22:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (res != -1) ^ permutare2.cpp:26:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (j < N) { ^ permutare2.cpp:35:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if ((i - j) < N) { ^ permutare2.cpp: In function 'std::vector<int> unrankPermutation(int, ll)': permutare2.cpp:52:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] while (i < 2 * N) { ^ permutare2.cpp:56:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (j < N && 2 * j + 1 >= i) { ^ permutare2.cpp: In function 'll rankPermutation(int, const std::vector<int>&)': permutare2.cpp:95:41: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] bool actualIsOne = (pos[val] <= N); // if val is in first half ^ permutare2.cpp: In function 'int main()': permutare2.cpp:139:56: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (unsigned int i = 0; i < (int)ans.size(); ++i) { ^
| Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
|---|---|---|---|---|---|---|
| 0 | 0 secunde | OK. | 10 | 10 | Exemplu | |
| 1 | 0.004 secunde | OK. | 10 | 10 | ||
| 2 | 0.124 secunde | OK. | 10 | 10 | ||
| 3 | Depășit | Limita de timp depășită | 10 | 0 | ||
| 4 | Depășit | Limita de timp depășită | 10 | 0 | ||
| 5 | Depășit | Limita de timp depășită | 10 | 0 | ||
| 6 | Depășit | Limita de timp depășită | 10 | 0 | ||
| 7 | Depășit | Limita de timp depășită | 10 | 0 | ||
| 8 | 0.108 secunde | OK. | 10 | 10 | ||
| 9 | 0 secunde | OK. | 10 | 10 | ||
| Punctaj total | 50 | |||||
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Permutare2 face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.