Pagini recente » Cod sursa (job #1645629) | Cod sursa (job #2683096) | Cod sursa (job #602845) | Cod sursa (job #3120750) | Cod sursa (job #142043)
Cod sursa(job #142043)
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
short int v[36009]={0};
void transform(char t[36009][20],int lin,int n){
int i,aux,inj,gata;
inj=n;
while(inj>1){
inj/=2;
do{
gata=1;
for(i=1;i<=n-inj;i++)
if(t[lin][i]>t[lin][i+inj]){
aux=t[lin][i];
t[lin][i]=t[lin][i+inj];
t[lin][i+inj]=aux;
gata=0;
}
}
while(!gata);
}
}
void copiere(char t[36009][20],int x,int y){
char m[36009],i;
memcpy(m,t[x],sizeof(t[x]));
memcpy(t[x],t[y],sizeof(t[y]));
memcpy(t[y],m,sizeof(m));
for(i=strlen(t[x]);i<20;i++)
t[x][i]='\0';
for(i=strlen(t[y]);i<20;i++)
t[y][i]='\0';
}
int platouri(char m[36009][20], int n) //returnez numarul de platouri
{
int sol=0,i,j;
for(i=1;i<n;++i)
if(strcmp(m[i],m[i+1])!=0) sol++;
else
while(strcmp(m[i],m[i+1])==0) ++i;
if(strcmp(m[n],m[n-1])!=0) sol++;
return sol;
}
int main(){
char m[36009][20];
int i,n,x,cn,inj,gata,c=0;
freopen("restante.in","r",stdin);
freopen("restante.out","w",stdout);
scanf("%d",&n);
cn=n;
for(i=1;i<=n;i++){
scanf("%s",&m[i]);
x=strlen(m[i]);
transform(m,i,x);
}
inj=n;
while(inj>1){
inj/=2;
do{
gata=1;
for(i=1;i<=n-inj;i++){
x=0;
x=strcmp(m[i],m[i+inj]);
if(x==1){
copiere(m,i,i+inj);
gata=0;}
}
}
while(!gata);
}
c=platouri(m,n);
printf("%d",c);
return 0;
}