sábado, 24 de marzo de 2012

Solución al problema Moscas de la Omi Training Gate

Este problema ejemplifica el uso de la idea subyacente en el algoritmo de ordenación por conteo (también conocido como ordenación por cubetas). Una posible solución es la siguiente:

#include<stdio.h>
long n[60002],i,s,k,x,y,m;
int main(){
scanf("%ld",&k);
for(i=0;i<k;i++){
scanf("%ld %ld",&x,&y);
n[x]++;
n[y]--;
}
for(i=0;i<60001;i++){
s=s+n[i];
if(s>m)
m=s;
}
x=0;
y=0;
printf("%ld\n",m);
for(i=0;i<60001;i++){
if(s==m&&s+n[i]<m)
printf("%ld %ld ",x,i);
if(s<m&&s+n[i]==m)
x=i;
s=s+n[i];
}
}


No hay comentarios:

Publicar un comentario