Cod sursa(job #249175)

Utilizator mihaipoascaPoasca Mihai mihaipoasca Data 27 ianuarie 2009 20:27:40
Problema Restante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
#include<fstream>
#include<string.h>

using namespace std;

ifstream fin("restante.in");
ofstream fout("restante.out");

int N;
char cuv[36005*4]['z'+4];

void swap(int i,int j){
    char aux['z'+4];
    strcpy(aux,cuv[i]);
    strcpy(cuv[i],cuv[j]);
    strcpy(cuv[j],aux);
}

int main(){
    fin>>N;
    for(int i=1;i<=N;i++)
        strcpy(cuv[i],"00000000000000000000000000\n");
    char x;
    int cnt=0;
    while(!(fin.eof())){
        fin.get(x);
        if(x=='\n'){
            int j=cnt;
            while(j/2 && strcmp(cuv[j],cuv[j/2])>0){
                swap(j,j/2);
                j>>=1;
            }
            ++cnt;
        }

        else
            ++cuv[cnt][x-'a'];
    }
//heapsortu

    int Nh=N;
    while(Nh){
        swap(1,Nh);
        --Nh;
        int i,j;
        i=1;
        while(1){
            j=i*2;
            if(j>Nh) break;
            if(j+1<=Nh && strcmp(cuv[j],cuv[j+1])<0) ++j;
            if(strcmp(cuv[j],cuv[i])<0) break;
            swap(i,j);
            i=j;
        }
    }

    /*for(int i=1;i<=N;i++)
        fout<<cuv[i]<<"\n";*/
  /*  cnt=0;
    for(int i=2;i<N;i++)
        if(strcmp(cuv[i-1],cuv[i])!=0&&strcmp(cuv[i],cuv[i+1])!=0)
            ++cnt;
    if(strcmp(cuv[1],cuv[2])!=0)
        ++cnt;
    if(strcmp(cuv[N],cuv[N-1])!=0)
        ++cnt;*/
    fout<<cnt<<"\n";
    fin.close();
    fout.close();
    return 0;
}