SHARE
TWEET

Untitled

a guest Jun 17th, 2019 74 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #define N 1000005
  3. using namespace std;
  4.  
  5. int A,B,C,X;
  6. int c1[N],c2[N],d[N],pr,ul,op[N];
  7.  
  8. void Citire()
  9. { cin>>A>>B>>C;
  10. }
  11.  
  12. void Rezolvare()
  13. { int i,cx_curent,cy_curent;
  14.   pr=ul=1;
  15.   c1[pr]=c2[pr]=d[pr]=op[pr]=0;
  16.   while(pr<=ul)
  17.     { cx_curent=c1[pr];
  18.       cy_curent=c2[pr];
  19.  
  20.       if(cx_curent==C || cy_curent==C) break;
  21.  
  22.       if(cx_curent<A) {c1[++ul]=A; c2[ul]=cy_curent; d[ul]=pr; op[ul]=1;} /// umplem A
  23.       if(cy_curent<B) {c1[++ul]=cx_curent; c2[ul]=B; d[ul]=pr; op[ul]=2;} /// umplem B
  24.       if(cx_curent!=0) {c1[++ul]=0; c2[ul]=cy_curent; d[ul]=pr; op[ul]=3;} /// golim A
  25.       if(cy_curent!=0) {c1[++ul]=cx_curent; c2[ul]=0; d[ul]=pr; op[ul]=4;} /// golim B
  26.       if(cx_curent!=0 && cy_curent!=B) /// Din A in B
  27.          { if(cx_curent+cy_curent>=B)
  28.                {c1[++ul]=cx_curent+cy_curent-B; c2[ul]=B; d[ul]=pr; op[ul]=5;}
  29.            else {c1[++ul]=0; c2[ul]=B-(cx_curent+cy_curent); d[ul]=pr; op[ul]=5;}
  30.  
  31.          }
  32.       if(cy_curent!=0 && cx_curent!=A) /// Din B in A
  33.          { if(cx_curent+cy_curent>=A)
  34.                {c1[++ul]=A; c2[ul]=cx_curent+cy_curent-A; d[ul]=pr; op[ul]=6;}
  35.            else {c1[++ul]=A-(cx_curent+cy_curent); c2[ul]=0; d[ul]=pr; op[ul]=6;}
  36.          }
  37.  
  38.       pr++;
  39.     }
  40. }
  41.  
  42. void AfisareRecursiva(int poz)
  43. {   if(c1[poz]!=0 && c2[poz]!=0)
  44.         { AfisareRecursiva(d[poz]);
  45.           if(op[poz]==1) cout<<"R"<<" "<<"A";
  46.           else if(op[poz]==2) cout<<"R"<<" "<<"B";
  47.           else if(op[poz]==3) cout<<"A"<<" "<<"C";
  48.           else if(op[poz]==4) cout<<"B"<<" "<<"C";
  49.           else if(op[poz]==5) cout<<"A"<<" "<<"B";
  50.           else if(op[poz]==6) cout<<"B"<<" "<<"A";
  51.         }
  52. }
  53.  
  54. int main()
  55. {   Citire();
  56.     Rezolvare();
  57.     AfisareRecursiva(ul);
  58.     return 0;
  59. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top