Cod sursa(job #351506)

Utilizator csizMocanu Calin csiz Data 28 septembrie 2009 11:38:09
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <fstream>
#include <vector>
#include <iostream>
using namespace std;

class grup{
    public:
    int x;
    int n;
    grup(int X):x(X),n(0){}
    void add(){n++;}
};
bool operator<(const grup& a,const grup& b){
    return a.x<b.x;
}
void sort(vector<grup> &v,int i,int j){
    if(i+1<j){
        int s=i+1,d=j-1;
        while(s<d){
            if(v[s]<v[i]) s++;
            else if(v[d]<v[i]) swap(v[s],v[d]);
            if(!(v[d]<v[i])) d--;
        }
        if(v[d]<v[i]){

        }else{
            d--;
        }
        swap(v[d],v[i]);

        sort(v,i,d);
        sort(v,d+1,j);
    }

}

int main(){
    ifstream in("algsort.in");
    ofstream out("algsort.out");

    vector<grup> v;int n;
    in>>n;
    v.reserve(n);
    for(int i=0;i<n;i++){
        int t;in>>t;
        if(v.size()&&v[v.size()-1].x==t){
            v[v.size()-1].add();
        }else{
            v.push_back(t);\
        }
    }
    for(int i=0;i<n/2;i++){
        swap(v[rand()%n],v[rand()%n]);
    }

    sort(v,0,n);

    for(int i=0;i<n;i++){
        for(int j=0;j<v[i].n;j++){
            out<<v[i].x<<" ";
        }
    }
}