public class Ordenacio {
// DECLARACIO DE LA TUPLA!!
public static class result {
int tipo;
int max;
int min;
}
// FI DE DECLARACIO!!
private static inout io = new inout();
public static void main(String args[]) throws Exception {
result r = new result();
int t[] = io.read_int_array();
TipoDeOrden(t, r);
io.writeln(r.tipo);
io.writeln(r.max);
io.writeln(r.min);
}
public static void TipoDeOrden (int T[], result r) {
/* {Pre: N es el numero de componentes de T, N>=3}
* {Post: r.tipo = tipo de orden dentro de la tabla,
* r.max = valor maximo de los elementos de la tabla,
* r.min = valor minimo de los elementos de la tabla} */
int i;
i = 0;
r.tipo = -1;
r.max = T[0];
r.min = T[0];
// {Inv: 0<= i <= N-1, r contiene el tipo, valor maximo y minimo de T [0..i-1]}
while (i <= T.length-2) {
Orden (T, i, r);
if(T[i] > r.max) r.max = T[i];
if(T[i] < r.min) r.min = T[i];
i = i + 1;
}
if(T[i] > r.max) r.max = T[i];
if(T[i] < r.min) r.min = T[i];
}
public static void Orden (int T1[], int i, result r) {
/* {Pre:}
* {Post: r.tipo contiene el tipo de orden de T[0..i+1]} */
if(T1[i] < T1[i+1]) {
if(r.tipo == 1 || r.tipo == -1) {
r.tipo = 1;
} else if(r.tipo == 2 || r.tipo == -1) {
r.tipo = 2;
} else {
r.tipo = 0;
}
}
if(T1[i] > T1[i+1]) {
if(r.tipo == 3 || r.tipo == -1) {
r.tipo = 3;
} else if(r.tipo == 4 || r.tipo == -1) {
r.tipo = 4;
} else {
r.tipo = 0;
}
}
if(T1[i] == T1[i+1]) {
if(r.tipo == 1 || r.tipo == -1) {
r.tipo = 2;
} else if(r.tipo == 3 || r.tipo == -1) {
r.tipo = 4;
} else if(r.tipo == 2 || r.tipo == -1) {
r.tipo = 2;
} else if(r.tipo == 4 || r.tipo == -1) {
r.tipo = 4;
} else {
r.tipo = 0;
}
}
}
} |