Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contenidos
Contenidos...........................................................................................................................1 E amen de !ivel 2...............................................................................................................2 Pro"lema #$ %istancia de &amming...............................................................................2 Pro"lema B$ &allando n'meros capic'as........................................................................( Pro"lema C$ Poema..........................................................................................................) Pro"lema %$ *a 'ltima esperan+a...................................................................................., Pro"lema E$ Bolivia -ord.............................................................................................11 E amen de !ivel ..............................................................................................................1. Pro"lema #$ &allando n'meros capic'as......................................................................1. Pro"lema B$ /lec0a ms *arga......................................................................................15 Pro"lema C$ 1ngulos.....................................................................................................12 Pro"lema %$ Bolivia -ord............................................................................................13 Pro"lema E$ *a gran "om"a de e plosi4n e tra5a de destrucci4n masiva 6................21
Examen de Nivel 2
Problema A: Distancia de Hamming
Autor: Jorge Tern La distancia de Hamming entre dos nmeros esta definida como el nmero de posiciones en sus representaciones binarias en las que difieren. Los ceros a la izquierda son usados si son necesarios para que a las representaciones binarias tengan misma longitud. Por ejemplo, los nmeros ! ! " ! !! difieren en la primera, tercera " cuarta posici#n, as$ que dan una distancia de Hamming de %. La entrada son cadenas que contienen las representaciones binarias de ciertos nmeros &cada par de nmeros tiene la misma longitud'. (ebe de)ol)er las distancias de Hamming de todos los pares de nmeros dados.
Entrada
La primera l$nea tendr un nmero N, que es la cantidad de casos de prueba. *eguido de N l$neas, +n cada l$nea se )ienen dos cadenas con las representaciones binarias separadas por un espacio. ,ada cadena tendr entre 1 " 50 caracteres, inclusi)e. Todos los elementos de nmeros contendrn s#lo los caracteres 1 " 0.
Salida
La salida consiste en una l$nea para cada caso de prueba que contiene la distancia Hamming.
Ejem lo de entrada 3 11010 01100 10000001 10000001 11111111 00000000 Ejem lo de salida 3 0 8
Soluci!n
/* Problema : Distancia de Hamming * Autor : Alberto Suxo * Cop rig!t: "eam S#$ * %engua&e : C''( Ansi)st le ******************************/ #include *iostream+ #include *string+ using namespace std, int main-. / int 0( i( &( cnt, string a( b, cin ++ 0, for- i10, i*0, i'' . / cin ++ a ++ b, cnt 1 0, for- &10, &*a2lengt!-., &'' . / if- a3&4 51 b3&4 . cnt '', 6 cout ** cnt ** endl, 6 return 0, 6
Entrada
La primera fila tendr un nmero N que es el nmero de datos de entrada, seguido de N l$neas, cada l$nea consiste de un numero entero n 7 500 un una l$nea.
Salida
Por cada nmeros de entrada el numero capica -allado. *i no e8iste un imprima la palabra imposible.
Soluci!n
/* Problema : Hallando n;meros capic;as * Autor : Alberto Suxo * Cop rig!t: "eam S#$ * %engua&e : C''( Ansi)st le ******************************/ #include *iostream+ using namespace std, long invertir- long a . / long aux 1 0, while- a + 0 . / aux 1 aux*10 ' a<10, a 1 a / 10, 6 return aux, 6 int main-. / int 0( i( cnt, long A( =, cin ++ 0, for- i10, i*0, i'' . / cin ++ A, cnt 1 0, while- cnt * 100 . / = 1 in>ertir- A ., if- A 11 = . / cout ** A ** endl, break, 6 else A 1 A ' =, cnt '', 6 if- cnt 11 100 . cout ** ?imposible? ** endl, 6 return 0, 6
Problema $: Poema
Autor: 9lberto *u8o ,omo cada a:o, en el colegio de Jos; se organiza todo un e)ento por el d$a de la madre. ,omenzar con un -imno, coreograf$as de bailes, una peque:a obra de teatro, una banda de estudiantes tocar un tema especialmente dedicado ", por ltimo, un poema, &a cargo de Jos;'. Pero, Jos; esta mu" ner)ioso, -a -ec-o todo lo posible para memorizar el poema. *us amigos decidieron a"udar a Jos; quitando todas las )ocales del poema " remplazarlos por guiones, luego dejaron que Jos; lo lea para )er si realmente lo -a memorizado todo. +l problema es que los amigos de Jos; quieren estar seguros de remplazarlos bien sin arruinar el poema, para lo cual decidieron -acerlo mediante un programa. Tu trabajo es a"udar a estos ni:os.
Entrada
La primera l$nea tendr un nmero entero N &0 < N < 1000' que representa el nmero de l$neas que tendr el poema. ,ada l$nea del poema tendr un m8imo de 100 caracteres que contendr: ma"scula &A%&', minscula &a%'', espacios & ', puntos &(' " comas &)'.
Salida
+n la salida se mostrar el poema sin )ocales como se muestra en el ejemplo de salida.
Ejem lo de entrada : Creci de a poco con tu calor( me alimentaba con tus caricias @rases de amor2 Con miedo de perderte222 Se !iAo la luA Ejem lo de salida Cr)c) d) ) p)c) c)n t) c)l)r( m) )l)m)nt)b) c)n t)s c)r)c))s @r)s)s d) )m)r2 C)n m))d) d) p)rd)rt)222 S) !)A) l) l)A
Soluci!n
/* Problema : Poema * Autor : Alberto Suxo * Cop rig!t: "eam S#$ * %engua&e : C( Ansi)st le ******************************/ #include*stdio2!+ #include*ct pe2!+ int esVocal- char c! . / char c 1 toloBer- c! ., return - c 11CaC DD c11CeC DD c11CiC DD c11CoC DD c11CuC ., 6 int main-. / int n( i, char line31014, scan@- ?<dEn?( Fn ., while- n)) . / gets- line ., for- i10, line3i4, i'' . if- esGocal- line3i4 . . line3i4 1 C)C, print@- ?<sEn? ( line ., 6 return 0, 6
Entrada
La primera l$nea es un entero + &1 7 + 7 100' el nmero de casos de prueba. *eguidamente se te dar un entero N &1 7 N 7 100' el nmero de coordenadas x, , que te en)iar B-ost. 9 continuaci#n )endrn N l$neas, cada una de 2 )alores x, , &0 7 x, , 7 1000' donde cada una representa la coordenada de una estructura Protoss. La ltima l$nea tendr - )alores x, ,, r. (onde x, , son las coordenadas del blanco del ataque nuclear " r &1 7 r 7 500' el radio de alcance de la bomba @uclear.
Salida
Para cada caso de prueba imprimir el nmero de estructuras Potross destruidas por la bomba @uclear &Cna estructura ser destruida si la coordenada de la estructura Protoss est en el radio de alcance de la ?omba @uclear'
Ejem lo de entrada 3 7 1 1 1 0 0 0 1 7
1 1 1 0 0 0 : 7 0 0 :0 :0 : : 10 Ejem lo de salida 1 7 1
+l grfico corresponde al primer caso de prueba, donde claramente podemos notar que el alcance del radio de la bomba nuclear llega a tocar el punto & 1, 0' &Pues la distancia del punto de la estructura Protoss a la bomba es menor o igual al radio de alcance de la bomba', por lo tanto la ?omba destru"e una estructura, en cambio la estructura que se encuentra en el punto &1, 1' no es alcanzada por la bomba @uclear.
Soluci!n
/* Problema : %a ;ltima esperanAa * Autor : Al>aro Ho&as * %engua&e : C''( Ansi)st le ******************************/ #include *cstdio+ #include *iostream+ #include *>ector+ #include *cmat!+
using namespace std, int t, double distancia-pair*double( double+ a( pair*double( double+ b . / double xx 1 -a2@irst ) b2@irst. * -a2@irst ) b2@irst., double 1 -a2second ) b2second. * -a2second ) b2second., return sIrt-xx ' ., 6 void resolve-. / vector*pair*double( double+ + estructuras, int n, scan@- ?<d?( Fn ., for-int i10,i*n,i''. / double x( , cin ++ x ++ , estructuras2pus!JbacK-maKeJpair*double( double+-x( .., 6 pair*double( double+ bomba0uclear, double radio, cin ++ bomba0uclear2@irst ++ bomba0uclear2second ++ radio, //He>isar todos los puntos x( int res 1 0, for-int i10,i*estructuras2siAe-., i''. / double dist 1 distancia-estructuras3i4( bomba0uclear., if-distancia-estructuras3i4( bomba0uclear. *1 radio. / res'', 6 6 print@- ?<dEn?( res ., 6 int main-. / scan@- ?<d?( Ft ., for-int i10, i*t, i''. resol>e-., 6
Entrada
La primera l$nea contendr un entero N &1 7 N 7 10' el nmero de casos de prueba. 9 continuaci#n se te dar N l$neas, cada una con una cadena &solo ma"sculas', donde cada carcter representa la letra disponible para armar la palabra ?1L0D09.
Salida
Para cada cadena que se te dio anteriormente, si es posible armar la palabra ?1L0D09 imprimir >+* P1*0?L+A, caso contrario >@1 +* P1*0?L+AG.
Ejem lo de entrada 3 =L%#G#A =LL##%GA =L%GMA"N Ejem lo de salida OS PLS#=%O OS PLS#=%O 0L OS PLS#=%O
Soluci!n
/* Problema : =oli>ia Pord * Autor : Alberto Suxo * Cop rig!t: "eam S#$ * %engua&e : C''( Ansi)st le ******************************/ #include *iostream+ #include *string+ using namespace std, int main-. / int 0( i( &, string linea, int =( L( %( #( G( A, cin ++ 0, for- i10, i*0, i'' . / cin ++ linea, = 1 L 1 % 1 # 1 G 1 A 1 0, for- &10, &*linea2lengt!-., &'' . / switch- linea3&4 . / case C=C: ='', break, case CLC: L'', break, case C%C: %'', break, case C#C: #'', break, case CGC: G'', break, case CAC: A'', break, 6 6 if- =*1 DD L*1 DD %*1 DD #*7 DD G*1 DD A*1 . cout ** ?0L OS PLS#=%O? ** endl, else cout ** ?OS PLS#=%O? ** endl, 6 return 0,
Entrada
La primera fila tendr un nmero N que es el nmero de datos de entrada, seguido de N l$neas, cada l$nea consiste de un numero entero n 7 500 un una l$nea.
Salida
Por cada nmeros de entrada el numero capica -allado. *i no e8iste un imprima la palabra imposible.
Soluci!n
/* Problema : Hallando n;meros capic;as * Autor : Alberto Suxo * Cop rig!t: "eam S#$ * %engua&e : C''( Ansi)st le ******************************/ #include *iostream+ using namespace std, long invertir- long a . / long aux 1 0, while- a + 0 . / aux 1 aux*10 ' a<10, a 1 a / 10, 6 return aux, 6 int main-. / int 0( i( cnt, long A( =, cin ++ 0, for- i10, i*0, i'' . / cin ++ A, cnt 1 0, while- cnt * 100 . / = 1 in>ertir- A ., if- A 11 = . / cout ** A ** endl, break, 6 else A 1 A ' =, cnt '', 6 if- cnt 11 100 . cout ** ?imposible? ** endl, 6 return 0,
Entrada
La primera l$nea contiene un nmero N que son casos de prueba. ,ada caso de prueba es una cadena en una l$nea. La cadena contiene entre 1 " 50 caracteres. ,ada carcter ser 2, 3, %, 4. La entrada termina cuando no -a" ms datos.
Salida
Por cada caso de prueba escriba en una l$nea la longitud de la cadena ms larga. *i no e8iste una cadena escriba %1.
Soluci!n
/* Problema : Rlec!a mSs larga * Autor : Alberto Suxo * Cop rig!t: "eam S#$ * %engua&e : C''( Ansi)st le ******************************/ #include *iostream+ #include *string+ #define $AT-A(=. -A.+-=.U-A.:-=. using namespace std, int main-. / int 0( i( &( K, string linea, cin ++ 0, for- K10, K*0, K'' . / cin ++ linea, int tam 1 linea2lengt!-.( max1)1, for -i10, i*tam, i'' . / if -linea3i4 11 C*C. / for -& 1 i ' 1, & * tam FF linea3&4 11 C)C, &''. ; max 1 $AT-max(&)i., for -& 1 i ' 1, & * tam FF linea3&4 11 C1C, &''. ; max 1 $AT-max(&)i., 6 else if -linea3i4 11 C+C. / for -& 1 i ) 1, & +1 0 FF linea3&4 11 C)C, &)). ; max 1 $AT-max(i)&., for -& 1 i ) 1, & +1 0 FF linea3&4 11 C1C, &)). ; max 1 $AT-max(i)&., 6 6 cout ** max ** endl, 6 return 0, 6
Problema $: 5ngulos
Autor: Jorge Tern ,omo responsable de una parte de un sistema de geometr$a te -a pedido que determinar si -a" ngulos rectos. Te dan tres puntos en el plano que forman un triangulo. Lo que debes decir es si -a" un ngulo recto en el tringulo que se forma.
Entrada
La entrada consiste de )arios casos de prueba, la primera l$nea contiene el nmero de casos n. Por cada caso se tiene una l$nea con las coordenadas de los tres puntos 6, 7, & que forman un tringulo. ,ada punto tiene dos enteros con las coordenadas del eje &%1000 7 x, , 7 1000'. Todos los nmeros caben en una )ariable entera.
Salida
0mprima una l$nea con el te8to *0 cuando uno de los - ngulos es recto " @1 cuando ninguno es un ngulo recto.
Soluci!n
/* Problema : Angulos * Autor : Alberto Suxo * Cop rig!t: "eam S#$ * %engua&e : C''( Ansi)st le ******************************/ #include *iostream+ #define x 0 #define 1 #define D#$ 7 typedef long punto3D#$4, using namespace std, bool recto- punto A( punto =( punto C . / punto G1( G7, // On realidad esto es un >ector :)D G13x4 1 =3x4 ) A3x4, G13 4 1 =3 4 ) A3 4, G73x4 1 C3x4 ) A3x4, G73 4 1 C3 4 ) A3 4, return -G13x4 * G73x4 ' G13 4 * G73 4. 11 0, 6 int main-. / int 0( i, punto A( =( C, cin ++ 0, for- i10, i*0, / cin ++ A3x4 cin ++ =3x4 cin ++ C3x4
i'' . ++ A3 4, ++ =3 4, ++ C3 4,
6 return 0,
if - recto-A(=(C. DD recto-=(C(A. DD recto-C(A(=. . cout ** ?S#? ** endl, else cout ** ?0L? ** endl,
Entrada
La primera l$nea contendr un entero N &1 7 N 7 10' el nmero de casos de prueba. 9 continuaci#n se te dar N l$neas, cada una con una cadena &solo ma"sculas', donde cada carcter representa la letra disponible para armar la palabra ?1L0D09.
Salida
Para cada cadena que se te dio anteriormente, si es posible armar la palabra ?1L0D09 imprimir JJ+* P1*0?L+GG, caso contrario JJ@1 +* P1*0?L+GG.
Ejem lo de entrada 3 =L%#G#A =LL##%GA =L%GMA"N Ejem lo de salida OS PLS#=%O OS PLS#=%O 0L OS PLS#=%O
Soluci!n
/* Problema : =oli>ia Pord * Autor : Alberto Suxo * Cop rig!t: "eam S#$ * %engua&e : C''( Ansi)st le ******************************/ #include *iostream+ #include *string+ using namespace std, int main-. / int 0( i( &, string linea, int =( L( %( #( G( A, cin ++ 0, for- i10, i*0, i'' . / cin ++ linea, = 1 L 1 % 1 # 1 G 1 A 1 0, for- &10, &*linea2lengt!-., &'' . / switch- linea3&4 . / case C=C: ='', break, case CLC: L'', break, case C%C: %'', break, case C#C: #'', break, case CGC: G'', break, case CAC: A'', break, 6 6 if- =*1 DD L*1 DD %*1 DD #*7 DD G*1 DD A*1 . cout ** ?0L OS PLS#=%O? ** endl, else cout ** ?OS PLS#=%O? ** endl, 6 return 0,
Los cient$ficos -an ofrecido a tu equipo una cantidad N de bombas rectangulares anti H zombie de diferentes tipos. +n este momento se encuentran en la etapa de preparaci#n de los lugares en los que las bombas llegar$an a formar una e8plosi#n ms efecti)a que nos libre de la infestaci#n zombie. (ada una posible locaci#n de las e8plosiones, determinar cual es el rea total cubierta por las e8plosiones. +n la figura 1 se puede )er que el rea de las 9 e8plosiones es de -0 &unidades cuadradas'.
Entrada
La entrada comienza con un nmero N$, el nmero de casos de prueba. Por cada caso de prueba: +l nmero N & 7 N 7 !!' de bombas rectangulares. 9 continuaci#n, siguen N l$neas, cada una con la descripci#n de un rectngulo. La descripci#n consiste en 9 nmeros enteros ax) a,) bx) b, que representan 2 puntos a) b: las esquinas inferior izquierda " superior derec-a respecti)amente. ! 7 ax < bx 7 !!!!!! ! 7 a, < b, 7 !!! Todos los rectngulos son )lidos &no e8istirn rectngulos de rea cero'.
Salida
Por cada caso de entrada, imprimir el nmero de caso seguido del nmero m8imo de zombies que se pueden destruir con los disparos del ca:#n laser.
Ejem lo de entrada 8 1 1 1 7 7 7 1 1 3 3 1 1 7 7 7 1 1 3 3 7 7 8 8 7 1 1 10000000 3 :000000 7 10000000 8 Ejem Caso Caso Caso Caso lo de salida W1: 1 W7: 8 W3: V W8: 7899998
Soluci!n
/* Problema : %a gran bomba222 * Autor : Xabriel Hea * %engua&e : C''( Ansi)st le ******************************/ #define DO=YXs #ifndef 0DO=YX #define D=X-a. cout**JJ%#0OJJ**?: ?**Wa**?1 ?**a**endl, #else #define D=X-a. , #endif #include *iostream+ #include *cstdio+ #include *cstring+ #include *string+ #include *>ector+ #include *algorit!m+ #include *cstring+ #include *cassert+ #include *cmat!+ #define @oreac!-#"(C. for-typeof-C2begin-..#"1C2begin-.,#"5 1C2end-.,#"''. #define P pair*int(int+ using namespace std,
class Hectangle/public: int ax(a (bx(b , Hectangle-./6 6, int n, vector*Hectangle+ rec, vector*P + >c, const int oo 1 10000000, int suma_intervalos-. / assert->c2siAe-. + 0., int res 1 0, >c2pus!JbacK-P-oo(oo.., //ordena primero por @irst( luego por second sort->c2begin-.( >c2end-.., int a 1 >c3042@irst(b 1 >c3042second, for-int i11,i*>c2siAe-.,i''. / if-b * >c3i42@irst. / res '1 -b ) a., a 1 >c3i42@irst, b 1 >c3i42second, 6 else / b 1 max-b(>c3i42second., 6 6 return res, 6 bool esta_en_y-int / return rec3r42a 6 (int r. *1 and * rec3r42b ,
int area_en_y-int . / int res 1 0, >c2clear-., for-int i10,i*n,i''. if-estaJenJ - (i.. >c2pus!JbacK-P-rec3i42ax(rec3i42bx.., if->c2empt -.. return 0, 6 return sumaJinter>alos-.,
int resuelva-. / scan@- ?<d?( Fn ., rec2resiAe-n., for-int i10,i*n,i''. / scan@-?<d <d <d <d?( Frec3i42ax( Frec3i42a ( Frec3i42bx( Frec3i42b ., assert-rec3i42ax *1 rec3i42bx., assert-rec3i42a *1 rec3i42b ., 6 int res 1 0, for-int 10, *11000, ''. res '1 areaJenJ - ., 6 return res,
int main-. / int nc, scan@- ?<d?( Fnc ., for-int i11,i*1nc,i''. print@-?Caso W<d: <dEn?(i(resuel>a-.., 6