#1041
Biperm
Pentru un număr natural nenul n
, să considerăm toate numerele naturale nenule mai mici sau egale cu n
, luând fiecare număr de câte două ori: 1, 1, 2, 2, 3, 3, ... , n, n
. Aceste numere le amestecăm aleator, şi le aranjăm pe două linii a câte n
elemente. Structura astfel obţinută o vom numi o bipermutare. În figurile 1, 2 şi 3 avem câte un exemplu de bipermutare pentru n=5
.
O bipermutare este perfectă, dacă ambele linii ale structurii reprezintă câte o permutare (vezi figurile 2 şi 3).
Prin mutare pe poziţia p
, înţelegem interschimbarea elementelor de pe aceeaşi coloană p
. În exemplele de mai jos, bipermutarea perfectă din figura 2 s-a obţinut din bipermutarea din figura 1, aplicând o mutare pe poziţa 2
. Bipermutarea perfectă din figura 3 s-a obţinut din bipermutarea din figura 1, aplicând mutări pe poziţiile 1
, 2
, 4
şi 5
.
Cunoscând o bipermutare, determinaţi:
OJI 2013, clasele XI-XII
Problema | Biperm | Operații I/O |
biperm.in /biperm.out
|
---|---|---|---|
Limita timp | 1 secunde | Limita memorie |
Total: 128 MB
/
Stivă 64 MB
|
Id soluție | #28460964 | Utilizator | |
Fișier | biperm.cpp | Dimensiune | 1.26 KB |
Data încărcării | 06 Martie 2021, 22:33 | Scor / rezultat | 15 puncte |
biperm.cpp: In function 'void dfs(int)': biperm.cpp:17:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(i=0;i<v[x].size();i++) { ^ biperm.cpp: In function 'int main()': biperm.cpp:58:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(i=0;i<sol.size();i++) ^ biperm.cpp:61:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(i=0;i<sol.size();i++) ^ biperm.cpp:34:23: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] fscanf(fin, "%d",&n); ^ biperm.cpp:36:29: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] fscanf(fin, "%d",&v1[i]); ^ biperm.cpp:38:29: warning: ignoring return value of 'int fscanf(FILE*, const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] fscanf(fin, "%d",&v2[i]); ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
1 | 0 secunde | Numar permutari duble corect | 10 | 3 | ||
2 | 0 secunde | Numar permutari duble corect | 10 | 3 | ||
3 | 0 secunde | Numar permutari duble corect | 10 | 3 | ||
4 | 0 secunde | Incorect | 10 | 0 | ||
5 | 0 secunde | Numar permutari duble corect | 10 | 3 | ||
6 | 0 secunde | Incorect | 10 | 0 | ||
7 | 0 secunde | Numar permutari duble corect | 10 | 3 | ||
8 | 0 secunde | Incorect | 10 | 0 | ||
9 | 0.072 secunde | Incorect | 10 | 0 | ||
10 | 0.02 secunde | Incorect | 10 | 0 | ||
Punctaj total | 15 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Biperm 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ă.