Advertisement
Guest User

Untitled

a guest
Feb 19th, 2020
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.96 KB | None | 0 0
  1. //problema Virgule
  2. #include <fstream>
  3. #include <cstring>
  4. using namespace std;
  5. ifstream cin("virgule.in");
  6. ofstream cout("virgule.out");
  7. char s[100];
  8. bool sol[100],poz[101],first=true;
  9. int gc,grd=0,n;
  10. bool cmp(char *s,int b1,int e1,int b2,int e2)
  11. {
  12. while(s[b1]=='0' && b1<e1)
  13. b1++;
  14. while(s[b2]=='0' && b2<e2)
  15. b2++;
  16. if(e1-b1!=e2-b2)
  17. return (e1-b1)>(e2-b2);
  18. while(s[b1]==s[b2] && b1<e1)
  19. {
  20. b1++;b2++;
  21. }
  22. return s[b1]>s[b2];
  23. }
  24.  
  25. void verif(char *s)
  26. {
  27. if(first==true)
  28. {
  29. grd=gc;
  30. for(int i=0; i<n; i++)
  31. sol[i]=poz[i];
  32. first=false;
  33. }
  34. else if(gc==grd)
  35. {
  36. int b1=0,e1=1,b2=0,e2=1;
  37. while(e1<n && e2<n)
  38. {
  39. while(poz[e1]!=1 && e1<n)
  40. e1++;
  41. while(sol[e2]!=1 && e2<n)
  42. e2++;
  43. bool v1=cmp(s,b1,e1-1,b2,e2-1);
  44. bool v2=cmp(s,b2,e2-1,b1,e1-1);
  45. if(v1!=v2)
  46. {
  47. if(v1)
  48. {
  49. for(int i=0; i<n; i++)
  50. sol[i]=poz[i];
  51. }
  52. return;
  53. }
  54. else
  55. {
  56. b1=e1++;
  57. b2=e2++;
  58. }
  59. }
  60. }
  61. }
  62. void bckt(char *s,int b,int e)
  63. {
  64. if(b==0)
  65. {
  66. verif(s);
  67. return;
  68. }
  69. for(int i=b-1; i>=0; i--)
  70. {
  71. if(cmp(s,b,e,i,b-1)){
  72. poz[i]=1;
  73. bckt(s,i,b-1);
  74. poz[i]=0;
  75. }
  76. else
  77. break;
  78. }
  79. }
  80. void afisare(char *s)
  81. {
  82. cout<<s[0];
  83. for(int i=1; i<n; i++)
  84. {
  85. if(sol[i])
  86. cout<<',';
  87. cout<<s[i];
  88. }
  89. }
  90. int main()
  91. {
  92. cin.getline(s,100);
  93. n=strlen(s);
  94. for(int i=n-1; i>=0 && (first || s[i]=='0'); i--)
  95. {
  96. gc=n-1;
  97. poz[i]=1;
  98. bckt(s,i,n-1);
  99. poz[i]=0;
  100. }
  101. afisare(s);
  102. return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement