Advertisement
Guest User

virgulav2.0

a guest
Jan 20th, 2020
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.95 KB | None | 0 0
  1. #include <fstream>
  2. #include <iostream>
  3. #include <cstdlib>
  4. using namespace std;
  5.  
  6. ifstream fin("virgule.in");
  7. ofstream fout("virgule.out");
  8.  
  9. int intrare[100];
  10. int i, n;
  11. int nrv = 1;
  12. int v[100], sol[100];
  13.  
  14. bool mai_mare(int i, int j)
  15. {
  16. if(i>n)
  17. {
  18. cout<<"mai_mare::i a depasit limita i="<<i<<" n="<<n;
  19. exit(-1);
  20. }
  21. if(j>n)
  22. {
  23. cout<<"mai_mare::j a depasit limita j="<<j<<" n="<<n;
  24. exit(-1);
  25. }
  26. ///aflam dimensiunea numarului
  27. int y=i,z=j;
  28. while(y<n && v[y]==0)++y;
  29. while(z<n && v[z]==0)++z;
  30. //cout<<i<<' '<<y<<" "<<j<<' '<<z<<endl;
  31.  
  32. ///scapam de zero-uri
  33. while(!intrare[i])++i;
  34. while(!intrare[j])++j;
  35.  
  36. ///daca lungimile nu sunt egale
  37. if (y-i > z-j)return true;
  38. if (y-i < z-j)return false;
  39.  
  40. ///daca sunt
  41. while(i <= y && j <= z)
  42. {
  43. //cout<<(int)intrare[i]<<' '<<(int)intrare[j]<<endl;
  44. if(intrare[i] > intrare[j])
  45. return true;
  46. else if(intrare[i] < intrare[j])
  47. return false;
  48. ++i,++j;
  49. }
  50. return true;
  51. }
  52.  
  53. bool solutie()
  54. {
  55. int st=1;
  56. while(v[st] == 0)++st;
  57. int dr = st + 1;
  58. while(v[dr] == 0)++dr;
  59.  
  60. while (dr < n)
  61. {
  62. cout<<st<<' '<<dr<<endl;
  63. if(st != dr && mai_mare(st, dr))
  64. return false;
  65. st = dr++;
  66. while(v[dr] == 0)++dr;
  67. }
  68. return true;
  69. }
  70.  
  71. void bkt(int k)
  72. {
  73. if(k==n){
  74. if(solutie())
  75. for(int i = 1; i <= n; ++i)
  76. sol[i] = v[i];
  77. }
  78. else for(int i = 0; i <= 1; ++i)
  79. {
  80. v[k]=i;
  81. bkt(k+1);
  82.  
  83. }
  84. }
  85.  
  86. int main()
  87. {
  88. ///citire
  89. i=1;char ch;
  90. while(fin>>ch){
  91. intrare[i] = ch - '0';
  92. ++i;
  93. }
  94. n = i-1;
  95.  
  96. ///rezolvare
  97. bkt(1);
  98.  
  99. ///afisare
  100. for(i=1;i<=n;++i)
  101. {
  102. intrare[i];
  103. cout<<intrare[i];
  104. if(sol[i])cout<<',';
  105. }
  106.  
  107. return 0;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement