/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static boolean contiene(int[][] matriz, int elemento) {
return encontrarNumero(matriz, 0, matriz.length-1, 0, matriz[0].length-1, elemento);
}
public static boolean encontrarNumero(int[][] matriz, int f0, int fN, int c0, int cN, int elem){
boolean enc = false;
if (f0 == fN && c0 == cN) {
return (matriz[f0][cN] == elem);
}
if (f0 < fN || c0 < cN) {
int fk = (f0 + fN) / 2;
int ck = (c0 + cN) / 2;
if (elem > matriz[fk][ck]) {
// Busca en primer cuadrante
enc = encontrarNumero(matriz, f0, fk, c0, ck, elem);
// busca en el tercero
enc = encontrarNumero(matriz, fk + 1, fN, c0, ck, elem) || enc;
} else if (elem < matriz[fk][ck]) {
// busca en el tercero
enc = encontrarNumero(matriz, fk + 1, fN, c0, ck, elem) || enc;
// busca en el segundo
enc = encontrarNumero(matriz, f0, fk, ck + 1, cN, elem) || enc;
// busca en el cuarto
enc = encontrarNumero(matriz, fk + 1, fN, ck + 1, cN, elem)|| enc;
} else if (matriz[fk][ck] == elem) {
return true;
}
}
return enc;
}
public static void main
(String args
[]) { int[][]carton= {{1, 2, 3,4,5}, {6,7,8,9,10}, {11,12,13,14,15}, {16,17,18,19,20}, {21,22,23,24,25} };
int[] buscados = { 6, 13, 35, 21, 7 };
for (int b : buscados) {
System.
out.
println("El número "+b
+" está?: "+ contiene
(carton, b
)); }
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBjb250aWVuZShpbnRbXVtdIG1hdHJpeiwgaW50IGVsZW1lbnRvKSB7CiAgICAgICByZXR1cm4gZW5jb250cmFyTnVtZXJvKG1hdHJpeiwgMCwgbWF0cml6Lmxlbmd0aC0xLCAwLCBtYXRyaXpbMF0ubGVuZ3RoLTEsIGVsZW1lbnRvKTsKICAgIH0KCnB1YmxpYyBzdGF0aWMgYm9vbGVhbiBlbmNvbnRyYXJOdW1lcm8oaW50W11bXSBtYXRyaXosIGludCBmMCwgaW50IGZOLCBpbnQgYzAsIGludCBjTiwgaW50IGVsZW0pewogICAgYm9vbGVhbiBlbmMgPSBmYWxzZTsKICAgICAgICBpZiAoZjAgPT0gZk4gJiYgYzAgPT0gY04pIHsKICAgICAgICAgICAgcmV0dXJuIChtYXRyaXpbZjBdW2NOXSA9PSBlbGVtKTsKICAgICAgICB9CiAgICAgICAgaWYgKGYwIDwgZk4gfHwgYzAgPCBjTikgewogICAgICAgICAgICBpbnQgZmsgPSAoZjAgKyBmTikgLyAyOwogICAgICAgICAgICBpbnQgY2sgPSAoYzAgKyBjTikgLyAyOwoKICAgICAgICAgICAgaWYgKGVsZW0gPiBtYXRyaXpbZmtdW2NrXSkgewogICAgICAgICAgICAgICAgLy8gQnVzY2EgZW4gcHJpbWVyIGN1YWRyYW50ZQogICAgICAgICAgICAgICAgZW5jID0gZW5jb250cmFyTnVtZXJvKG1hdHJpeiwgZjAsIGZrLCBjMCwgY2ssIGVsZW0pOwogICAgICAgICAgICAgICAgLy8gYnVzY2EgZW4gZWwgdGVyY2VybwogICAgICAgICAgICAgICAgZW5jID0gZW5jb250cmFyTnVtZXJvKG1hdHJpeiwgZmsgKyAxLCBmTiwgYzAsIGNrLCBlbGVtKSB8fCBlbmM7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoZWxlbSA8IG1hdHJpeltma11bY2tdKSB7CiAgICAgICAgICAgICAgICAvLyBidXNjYSBlbiBlbCB0ZXJjZXJvCiAgICAgICAgICAgICAgICBlbmMgPSBlbmNvbnRyYXJOdW1lcm8obWF0cml6LCBmayArIDEsIGZOLCBjMCwgY2ssIGVsZW0pIHx8IGVuYzsKICAgICAgICAgICAgICAgIC8vIGJ1c2NhIGVuIGVsIHNlZ3VuZG8KICAgICAgICAgICAgICAgIGVuYyA9IGVuY29udHJhck51bWVybyhtYXRyaXosIGYwLCBmaywgY2sgKyAxLCBjTiwgZWxlbSkgfHwgZW5jOwogICAgICAgICAgICAgICAgLy8gYnVzY2EgZW4gZWwgY3VhcnRvCiAgICAgICAgICAgICAgICBlbmMgPSBlbmNvbnRyYXJOdW1lcm8obWF0cml6LCBmayArIDEsIGZOLCBjayArIDEsIGNOLCBlbGVtKXx8IGVuYzsKICAgICAgICAgICAgfSBlbHNlIGlmIChtYXRyaXpbZmtdW2NrXSA9PSBlbGVtKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZW5jOwp9CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB7CiAgICAgaW50W11bXWNhcnRvbj0ge3sxLCAyLCAzLDQsNX0sIHs2LDcsOCw5LDEwfSwgezExLDEyLDEzLDE0LDE1fSwgezE2LDE3LDE4LDE5LDIwfSwgezIxLDIyLDIzLDI0LDI1fSB9OwoKaW50W10gYnVzY2Fkb3MgPSB7IDYsIDEzLCAzNSwgMjEsIDcgfTsKCiAgICAgICAgZm9yIChpbnQgYiA6IGJ1c2NhZG9zKSB7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRWwgbsO6bWVybyAiK2IrIiBlc3TDoT86ICIrIGNvbnRpZW5lKGNhcnRvbiwgYikpOwogICAgICAgIH0KfQp9