•astronomy
|
 |
« : Aprilie 06, 2008, 14:32:00 » |
|
Aici puteţi discuta despre problema Carti.
|
|
|
Memorat
|
|
|
|
•tm_radu
|
 |
« Răspunde #1 : Aprilie 08, 2008, 15:46:45 » |
|
Exista cazuri particulare la problema asta? Iau doar 80 de puncte si imi da corect pe testele generate de mine. 
|
|
|
Memorat
|
Daca nu merge o preblema, depaneaz-o, si abia apoi arunci calculatoru pe geam
|
|
|
•filipb
|
 |
« Răspunde #2 : Aprilie 08, 2008, 17:04:00 » |
|
S-a reevaluat. 2 teste erau gresite deoarece N nu corespundea cu numarul de carti de pe masa. Ne cerem scuze pentru neplaceri. Eu cand citeam, citeam cu fgets, pentru mine nu conta N-ul acela, si de aceea acea eroare e trecut neobservata. Acum iei 100  .
|
|
|
Memorat
|
|
|
|
•tm_radu
|
 |
« Răspunde #3 : Aprilie 08, 2008, 18:04:16 » |
|
 Mersi 
|
|
|
Memorat
|
Daca nu merge o preblema, depaneaz-o, si abia apoi arunci calculatoru pe geam
|
|
|
•zbarni
Strain
Karma: 3
Deconectat
Mesaje: 23
|
 |
« Răspunde #4 : Aprilie 20, 2008, 22:59:09 » |
|
Care-i smecheria?  iau numai 20 de puncte... personal procedez asa la fiecare configuratie: qsort, ca sa fie in sir, dupa care iau un vector 'seged' cu toate elementele=0; un for pana la m, si pentru fiecare numar dau 1, sau seged[ i ]+=i-1 daca seged[ i ]<k, dupa care seged[i-1]=0; in final numar numerele nenule, si daca %2==0 castiga bob ... Este ceva in neregula cu ideea? (poate nu am inteles bine problema  1. #include<fstream> 2. #include<cstdlib> 3. using namespace std; 4. ifstream be ("carti.in"); 5. ofstream ki ("carti.out"); 6. typedef struct 7. { 8. int kk, mm; 9. } S; 10. S c[15]; 11. 12. int compare (const void*a,const void*b) 13. { 14. return (*(int*)a-*(int*)b); 15. } 16. int a[15][15]; 17. int main() 18. { 19. int m,k,n,i,j,s,SZ,seged[15]; 20. char x; 21. be>>n; 22. for (i=0;i<n;i++) 23. { 24. be>>m>>k; 25. c[i].kk=k; c[i].mm=m; 26. for (j=0;j<m;j++) 27. { 28. be>>x; 29. if (x>='A') 30. { 31. switch (x) 32. { 33. case 'A': { a[i][j]=1;break; } 34. case 'J': { a[i][j]=11; break; } 35. case 'Q': { a[i][j]=12; break; } 36. case 'K': { a[i][j]=13; break; } 37. } 38. } 39. else 40. if (x=='1') 41. {a[i][j]=10; be>>x;} 42. else 43. a[i][j]=x-48; 44. } 45. } 46. be.close(); 47. for (i=0;i<n;i++) 48. { 49. m=c[i].mm; k=c[i].kk; 50. qsort(a[i],m,sizeof(int),compare); 51. SZ=0; 52. for (j=0;j<15;j++) 53. seged[j]=0; 54. for (j=0;j<m;j++) 55. { 56. seged[a[i][j]]=1; 57. if (seged[a[i][j]-1]<k && seged[a[i][j]-1]>0 && j) 58. { 59. seged[a[i][j]]+=seged[a[i][j]-1]; 60. seged[a[i][j]-1]=0; 61. } 62. } 63. for (j=0;j<m;j++) 64. if (seged[a[i][j]]>0) 65. SZ++; 66. if (SZ%2==0) 67. ki<<"Bob"; 68. else 69. ki<<"Alice"; 70. if (i!=n-1) 71. ki<<"\n"; 72. } 73. ki<<"\n"; 74. ki.close(); 75. return 0; 76. } ultima parte eventual un test puteti sa aratati? in afara de primul si 8.
|
|
« Ultima modificare: Aprilie 21, 2008, 09:49:00 de către Bogdan Tataroiu »
|
Memorat
|
|
|
|
•amadaeus
Client obisnuit

Karma: 28
Deconectat
Mesaje: 93
|
 |
« Răspunde #5 : Aprilie 24, 2008, 11:42:54 » |
|
Probabil ca scapi din vedere anumite cazuri. Solutia oficiala studiaza toate situatiile posibile de joc si este descrisa aici.
|
|
|
Memorat
|
"one of these days I'm going to cut you into little pieces..."
|
|
|
•xtreme
|
 |
« Răspunde #6 : Septembrie 11, 2009, 13:03:34 » |
|
Ar fi trebuit sa se evidentieze recursitivitatea in solutie si pentru a transforma solutia aceea intr-una valida mai trebuie aduagat ceva cod...e bine ca in solutiile de la concursul de la Grigore Moisil se lasa aprope tot timpul pentru cititor obligatia de a contribui pentru a rezolva problema dar uneori absenta unor informatii poate duce in eroare cititorul...
|
|
|
Memorat
|
|
|
|
•PlayLikeNeverB4
|
 |
« Răspunde #7 : Martie 14, 2011, 20:24:52 » |
|
Ce trebuie optimizat pe langa solutia oficiala ca sa intre in timp? Am vazut ca si altii aveau TLE pe aceleasi teste 
|
|
|
Memorat
|
|
|
|
•ctlin04
|
 |
« Răspunde #8 : Decembrie 08, 2012, 21:11:40 » |
|
Poate sa-mi dea cineva un test pe care sa nu mearga ideea mea: Daca numarul maxim de carti este k atunci impart cartile in siruri de numere consecutive, apoi fiecare sir il sectionez in blocuri de k numere, dupa aceasta aplic jocul NIM. Exemplu: 7 2 10 11 1 2 3 8 9 secventele consecutive sunt 1 2 3 si 8 9 10 11 blocurile atunci vor fi 1 2 3 8 9 10 11 respectiv daca fac xor intre numarul de carti din gramezi obtin un numar mai mare ca 0, respectiv Alice cistiga jocul. 
|
|
|
Memorat
|
|
|
|
•klamathix
|
 |
« Răspunde #9 : Decembrie 08, 2012, 22:21:02 » |
|
Un test nu prea am timp sa-ti caut acum, dar e suficient sa realizezi ca NIM-ul descris de tine nu este echivalent cu jocul original.
Presupunem ca ai o gramada de 3 numere : 3 4 5. Sa zicem ca in jocul original iei numarul 4. La tine, s-ar traduce prin faptul ca din gramada cu 3 elemente iti mai raman 2 elemente. Dar asta nu e adevarat, fiindca nu le poti lua impreuna la o eventuala mutare. De fapt tu iei un element din gramada, dupa care o spargi in 2 gramezi de cate un element, iar asta nu respecta regulile NIM-ului.
|
|
|
Memorat
|
|
|
|
•vendetta
|
 |
« Răspunde #10 : Decembrie 08, 2012, 22:47:57 » |
|
Uite aici un test pe care pica sursa ta .in: 1 8 2 2 3 4 5 6 7 8 9
raspunsul e Alice
|
|
|
Memorat
|
|
|
|
•ctlin04
|
 |
« Răspunde #11 : Decembrie 09, 2012, 15:08:20 » |
|
Ms mult pentru explicatii si pentru test  Am facut acum dupa solutia oficiala, dar tot iau incorect pe doua teste, stie cineva care ar fi cauza ?
|
|
« Ultima modificare: Decembrie 09, 2012, 22:23:14 de către catalin »
|
Memorat
|
|
|
|
|