Cod sursa(job #2938281)

Utilizator NutaAlexandruASN49K NutaAlexandru Data 11 noiembrie 2022 22:15:24
Problema Sortare prin comparare Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.39 kb
#include <fstream>
#include<vector>
#include <algorithm>
#import <cmath>
#import <cassert>

namespace std
{
    vector<int>interclass(vector<int>a,vector<int>b)
    {
        int n=a.size(),m=b.size();
        int an=0,am=0;
        vector<int>rez;
        while(an<n && am<m)
        {
            if(a[an]<b[am])
            {
                rez.push_back(a[an++]);
            }
            else
            {
                rez.push_back(b[am++]);
            }
        }
        while(an<n)
        {
            rez.push_back(a[an++]);
        }
        while(am<m)
        {
            rez.push_back(b[am++]);
        }
        return rez;
    }

    vector<int>add_iterator(vector<int>::iterator it1,vector<int>::iterator it2)
    {
        vector<int>rez;
        while(it1!=it2)
        {
            rez.push_back(*it1);
            it1++;
        }
        return rez;
    }

    vector<int> sort(vector<int>a)
    {
        if(a.size()==1)return a;
        int m=(int)a.size()/2;
        return interclass(sort(add_iterator(a.begin(),a.begin()+m)) , sort( add_iterator(a.begin()+m,a.end()) ) );
    }
}
using namespace std;
int main()
{
    ifstream cin("algsort.in");
    ofstream cout("algsort.out");
    int n;
    cin>>n;
    vector<int>a(n);
    for(auto &c:a)cin>>c;
    a=sort(a);
    for(auto &c:a)
    {
        cout<<c<<' ';
    }
}