#include<iostream>
#include<cstdio>
#include<cstring>
#include<set>
#include<algorithm>
#define db(a) cout << #a << " = " << a << endl
#define db2(a, b) cout << #a << " = " << a << " " << #b << " = " << b << endl
#define listar(lista) for (int i = 0; i < lista.size(); i++) db(lista[i])
using namespace std;
int main() {
#ifdef dennisbot
freopen("in.in", "r", stdin);
#endif
int aveup = 0, avedown = 0;
double sumup = 0, sumdown = 0;
int creciente = 0, decreciente = 0;
bool first = true, crece = true, decrece = true;
int d, leido, cont = 0;
while (scanf("%d", &d) != EOF) {
if (d != 0) {
cont++;
if (first) {
leido = d;
first = false;
continue;
}
if (leido == d) {
if (crece)
creciente++;
if (decrece)
decreciente++;
leido = d;
continue;
}
if (leido < d) {
if (decrece) {
if (creciente != decreciente) {
sumdown += decreciente;
avedown++;
}
decrece = false;
decreciente = 0;
}
crece = true;
creciente++;
leido = d;
continue;
}
if (leido > d) {
if (crece) {
if(creciente != decreciente) {
sumup += creciente;
aveup++;
}
crece = false;
creciente = 0;
}
decrece = true;
decreciente++;
leido = d;
}
}
else {
if (cont == 0) break;
if (creciente == decreciente)
printf("Nr values = %d: %.6f %.6f\n", cont, 0. , 0.);
else {
if (crece) sumup += creciente, aveup++;
if (decrece) sumdown += decreciente, avedown++;
printf("Nr values = %d: %.6f %.6f\n",cont , (aveup != 0) ? sumup / aveup : 0, (avedown != 0) ? sumdown / avedown : 0);
}
creciente = decreciente = leido = cont = 0;
first = crece = decrece = true;
sumdown = sumup = aveup = avedown = 0;
}
}
return 0;
}
sábado, 31 de marzo de 2012
413 - Up and Down Sequences, UVA
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario