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];
}
}


miércoles, 21 de marzo de 2012

Concurso de la UVA Online Judge

Les dejo el link donde podran ver los problemas del concurso en linea de la UVA:
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=13&page=show_contest&contest=296

Yo intente hacer el C y el H, pero mis algoritmos no eran eficientes, por lo que no me los aceptaron. Se los dejo como comentarios.

Si a alguien se le ocurre como resolverlos, o algun otro de la UVA, posteen su codigo.

sábado, 17 de marzo de 2012

Un número redivisible es aquel que es divisible entre su número de divisores positivos. Por ejemplo 1(1 divisor), 12(6 divisores) y 9(3 divisores) pero no 7(2 divisores) ni 16(5 divisores)

Escribe un programa que dados dos enteros l y h, diga cuántos números refactorizables hay entre l y h, inclusive.