Pagini recente » Cod sursa (job #1428542) | Cod sursa (job #693422) | Cod sursa (job #155644) | Cod sursa (job #1008921) | Cod sursa (job #249175)
Cod sursa(job #249175)
#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;
}