Cod sursa(job #2005514)

Utilizator thinkphpAdrian Statescu thinkphp Data 27 iulie 2017 12:47:00
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.59 kb
#include <iostream>
#include <fstream>
#include <vector>
#define FIN "algsort.in"
#define FOUT "algsort.out"

using namespace std;

class Container {

      public:

      Container(vector<int> vec, int _n): n(_n),arr(vec){};

      void print() {

            for(int i = 0; i < n; ++i) cout<<arr[i]<<" ";
      }; 

      void sorted() {

           int gaps, dist, i, j, k, aux; 

           for(gaps = n / 2; gaps > 0; gaps/=2) {

               dist = gaps;

               for(i = dist; i < n; ++i) {

                   aux = arr[ i ] ;

                   for(j = i - dist; j >= 0 && arr[j] > aux; j-=dist) {
                    
                       arr[ j + dist] = arr[ j ];
                   }

                       arr[ j + dist] = aux;
               }
           }
            
      };

      friend ostream &operator<<(ostream &stream, const Container &obj) {

             vector<int> vec = obj.arr;

             for(vector<int>::iterator it = vec.begin(); it != vec.end(); ++it)

             stream<<(*it)<<" "; 
      };

      private: 
      vector<int> arr;
      int n; 

      void _swap(int i, int j) {

           int cxor;
               cxor = arr[i]^arr[j];   
               arr[i] = cxor^arr[i];
               arr[j] = cxor^arr[j];
      };
};

int main() {

 int elem, 
     n;
 vector<int> arr;

 ifstream fin(FIN);
 ofstream fout(FOUT);

 fin>>n; 

 for(int i = 0; i < n; ++i) fin>>elem, arr.push_back(elem);

 Container container(arr, n); 

 container.sorted();
 
 fout<<container;
  
 return(0); 
};