Pagini recente » Cod sursa (job #2202507) | Cod sursa (job #2430673) | Cod sursa (job #249166)
Cod sursa(job #249166)
#include<fstream>
#include<string.h>
using namespace std;
ifstream fin("restante.in");
ofstream fout("restante.out");
int N;
char cuv[36005*4][20];
void swap(int i,int j){
char aux[20];
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],"0000000000000000");
char x;
int cnt=0;
while(!(fin.eof())){
fin.get(x);
if(x=='\n')
cuv[cnt++]['z']=0;
else
++cuv[cnt][x-'a'];
}
//heapsortu
for(int i=1;i<=N;i++){
int j=i;
while(j/2 && strcmp(cuv[j],cuv[j/2])>0){
swap(j,j/2);
j>>=1;
}
}
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;
}
}
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;
}