Advertisement
Guest User

Untitled

a guest
Oct 17th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.71 KB | None | 0 0
  1. #include <stdio.h>
  2. class My_pair
  3. {
  4. public:
  5.     unsigned int first;
  6.     unsigned int second;
  7.     void operator=(const My_pair &x)
  8.     {
  9.     first = x.first;
  10.     second = x.second;
  11.     }
  12. };
  13.  
  14. unsigned int nietrywialny(unsigned int number)
  15. {
  16.     unsigned int dzielnik=1;
  17.     if(number % 2 == 0)
  18.     {
  19.         return number/2;
  20.     }
  21.     else
  22.     {
  23.         for(unsigned int i=(number/2); i>=2; --i)
  24.         {
  25.             if(number%i==0)
  26.             {
  27.                 return i;
  28.             }
  29.         }
  30.     }
  31.     return dzielnik;
  32. }
  33.  
  34. bool operator <( const My_pair &x, const My_pair &y )
  35. {
  36.     if(x.first != y.first)
  37.     {
  38.         return x.first < y.first;
  39.     }
  40.     else
  41.     {
  42.         if(nietrywialny(x.second) > nietrywialny(y.second))
  43.             return true;
  44.         else
  45.             return false;
  46.     }
  47.  
  48. }
  49.  
  50. void InsertSort(My_pair *all, unsigned int n ){
  51.     My_pair swapp;
  52.     int j;
  53.     for(unsigned int i=1;i<(n/2) ;++i){
  54.             swapp = all[i];
  55.             for (j=i-1;(j>=0)&&(swapp<all[j]); --j)
  56.                 all[j+1]=all[j];
  57.             all[j+1]=swapp ;
  58.         }
  59.     }
  60.  
  61. void dolina_dino()
  62. {
  63.     unsigned int n, d;
  64.     scanf("%u", &n);
  65.     for(unsigned int i=0; i<n; ++i)
  66.     {
  67.         My_pair *all;
  68.         scanf("%u",&d);
  69.         all = new My_pair [d/2];
  70.  
  71.         for(unsigned int j=0; j<d/2;++j)
  72.         {
  73.             scanf("%u",&all[j].first);
  74.             scanf("%u",&all[j].second);
  75.         }
  76.         InsertSort(all,d);
  77.         for(unsigned int i=0;i<d/2;++i)
  78.         {
  79.             printf("%u ",all[i].first);
  80.              printf("%u ",all[i].second);
  81.         }
  82.         delete [] all;
  83.     }
  84. }
  85.  
  86. int main()
  87. {
  88.     dolina_dino();
  89.     return 0;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement