#154
xor
Fiind date n numere naturale a
1
, a
2
... a
n
, se calculează a
i
^ a
j
, pentru oricare i
şi j
(1 ≤ i < j ≤ n
) şi se obţine un şir de valori naturale. Cu caracterul ^
s-a notat operatorul sau exclusiv pe biți (xor
) şi se aplică conform regulii din tabelul de mai jos.
Fiind date cele n
valori şi un număr natural nenul m
, 1 ≤ m ≤ n*(n-1)/2
, să se determine al m
-lea număr din şirul obținut mai sus, considerând valorile în ordine crescătoare.
Problema | xor | Operații I/O |
![]() xor.in /xor.out
|
---|---|---|---|
Limita timp | 0.2 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
Id soluție | #58088502 | Utilizator | |
Fișier | xor.cpp | Dimensiune | 1.09 KB |
Data încărcării | 13 Mai 2025, 15:04 | Scor / rezultat | Eroare de compilare |
xor.cpp:1:1: error: expected unqualified-id before string constant "// solutia oficiala\n\n#include <iostream>\n#include <fstream>\n#include <cstring>\n\nusing namespace std;\n\n#define NMAX 100000\n#define KMAX 20\n#define VMAX (1 << KMAX)\n\nint a[NMAX];\nint counter[VMAX];\n\nint main()\n{\n fstream fin(\"xor.in\");\n ofstream fout(\"xor.out\");\n\n int n, m;\n int i, k, j;\n long long counterXor0;\n int len = 2;\n int result = 0;\n\n fin >> n >> m;\n\n for (i = 0; i < n; i++)\n fin >> a[i];\n\n for (k = KMAX - 1; k >= 0; k--) {\n memset(counter, 0, sizeof(counter));\n for (i = 0; i < n; i++)\n counter[a[i] >> k]++;\n\n counterXor0 = 0;\n result <<= 1;\n\n for (i = 0; i < len; i++) {\n j = i ^ result;\n if (i == j)\n counterXor0 += (long long)counter[i] * (counter[i] - 1) / 2;\n if (i < j)\n counterXor0 += (long long)counter[i] * counter[j];\n }\n\n if (counterXor0 < m) {\n result++;\n m -= counterXor0;\n }\n\n len *= 2;\n }\n\n fout << result;\n\n return 0;\n}\n" ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema xor 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ă.