daily pastebin goal
9%
SHARE
TWEET

Untitled

a guest Jul 12th, 2018 54 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4.  
  5. typedef struct Aktor{
  6.         int raz,dwa;
  7.         string pierwszy,drugi;
  8.         struct Aktor *next,*prev;
  9. } A;
  10.  
  11. class Las{
  12.         int ile;
  13.         public:
  14.         Las(){
  15.                 glowa=ogon=NULL;
  16.                 ile=0;
  17.         }
  18.         ~Las(){}
  19.         void dodaj(string x,string y,int a,int b){
  20.                 A * nowy=new Aktor;
  21.                 nowy->raz=a;
  22.                 nowy->dwa=b;
  23.                 nowy->pierwszy=x;
  24.                 nowy->drugi=y;
  25.                 nowy->next=NULL;
  26.                 if(!ile){
  27.                         ile++;
  28.                         nowy->prev=NULL;
  29.                         glowa=ogon=nowy;
  30.                 }
  31.                 else{
  32.                         ile++;
  33.                         ogon->next=nowy;
  34.                         nowy->prev=ogon;
  35.                         ogon=nowy;
  36.                 }
  37.         }
  38.         void przejdz(int k){
  39.                 A * n=glowa;
  40.                 int i=0;
  41.                 while(n){
  42.                         if(i==k){cout<<n->pierwszy<<endl<<n->drugi<<endl<<n->raz<<endl<<n->dwa<<endl;}
  43.                         i++;
  44.                         n=n->next;
  45.  
  46.                 }
  47.         }
  48.  
  49.  
  50.         A * mid(int p,int k,A *x){
  51.         A *n=x;
  52.         int i=p;
  53.         //x(p)
  54.  
  55.         while(n){
  56.         if (i==k){
  57.         break;
  58.         }
  59.         n=n->next;
  60.         i++;
  61.         }
  62.         return n;
  63.  
  64.         }
  65.  
  66.         A * getogon(){return ogon;}
  67.         A * getglowa(){return glowa;}
  68.         void setogon(A * o){ogon=o;}
  69.         void setglowa(A*g){glowa=g;}
  70. int getile(){return ile;}
  71.         private:
  72.         A * glowa,*ogon;
  73. };
  74. int jeden,drugi;
  75. string raz,dwa;
  76. void swap(A *x,A* y){
  77.         raz=x->pierwszy,dwa=x->drugi;
  78.         jeden=x->raz,drugi=x->dwa;
  79.         x->raz=y->raz;
  80.         x->dwa=y->dwa;
  81.         x->pierwszy=y->pierwszy;
  82.         x->drugi=y->drugi;
  83.  
  84.         y->raz=jeden;
  85.         y->dwa=drugi;
  86.         y->pierwszy=raz;
  87.         y->drugi=dwa;
  88.  
  89.  
  90. }
  91.  
  92. void quick(Las las,A *left,A*right){
  93.         if (left!=right){
  94.                 A * m=left;
  95.                 A *i;
  96.                 i=left->next;
  97.                 while(i&&i!=right->next){
  98.                         if(i->pierwszy<left->pierwszy){
  99.                                 m=m->next;
  100.                                 swap(m,i);
  101.  
  102.                         }
  103.                                 i=i->next;
  104.                 }
  105. if(left&&m&&left!=m)    swap(left,m);
  106.  
  107. if(left&&m->prev&&left!=m)quick(las,left,m->prev);
  108. if(m->next&&right&&m!=right)quick(las,m->next,right);
  109.  
  110.         }
  111.  
  112.  
  113. }
  114. Las scal(Las raz,Las dwa){
  115.         Las *pomocniczy=new Las();
  116. A *i=raz.getglowa(),*j=dwa.getglowa();
  117. while(i!=NULL||j!=NULL){
  118.  
  119.         if((j!=NULL&i!=NULL&i->drugi<=j->drugi)|(j==NULL&i!=NULL)) {pomocniczy->dodaj(i->pierwszy,i->drugi,i->raz,i->dwa); i=i->next;}
  120. else if((j!=NULL&i!=NULL&i->drugi>j->drugi)|(i==NULL&j!=NULL)){pomocniczy->dodaj(j->pierwszy,j->drugi,j->raz,j->dwa); j=j->next;}
  121.  
  122. }
  123. return *pomocniczy;
  124. }
  125.  
  126.  
  127. Las merge(Las &las,A * left,A * right,int p,int k){
  128.         Las tm;
  129.         if(left==right) {Las ble;ble.dodaj(left->pierwszy,left->drugi,left->raz,left->dwa);return ble;}
  130.         if (left!=right){
  131.  
  132. int ble=(p+k)/2;
  133.         A* m=las.mid(p,ble,left);
  134.         Las tm1,tm2;
  135.         tm1=merge(las,left,m,p,ble);
  136.         tm2=merge(las,m->next,right,ble+1,k);
  137. tm=scal(tm1,tm2);
  138.  
  139.         }
  140.         return tm;
  141. }
  142.  
  143.  
  144.  
  145.  
  146. int main(){
  147.         int n,k;
  148.         int tmpile;
  149.  
  150.         Las cos;
  151.         string pusty,pierwsze,drugie;
  152.         int wybor,raz,dwa;
  153.         cin>>n;
  154.         while(n){
  155.                 cin>>wybor;
  156.                 switch(wybor){
  157.                         case 1:{
  158.                                                          getline(cin,pusty);
  159.                                                  getline(cin,pierwsze);
  160.                                          getline(cin,drugie);
  161.                                                  cin>>raz>>dwa;
  162.                                                          cos.dodaj(pierwsze,drugie,raz,dwa);
  163.                                                          break;}
  164.                         case 2:{
  165.                                                          quick(cos,cos.getglowa(),cos.getogon());
  166.                                                          break;}
  167.                         case 3:{
  168.  
  169.                                                          tmpile=cos.getile()-1;
  170.                                                          cos=merge(cos,cos.getglowa(),cos.getogon(),0,tmpile);
  171.                                                          break;}
  172.                         case 4:{
  173.                                                          cin>>k;
  174.                                                          cos.przejdz(k);
  175.  
  176.                                                          break;}
  177.                         default: break;
  178.  
  179.                 }
  180.                 n--;}
  181.                 return 0;}
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