diff options
Diffstat (limited to '12/QG-2007/maxiseq.c')
-rw-r--r-- | 12/QG-2007/maxiseq.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/12/QG-2007/maxiseq.c b/12/QG-2007/maxiseq.c new file mode 100644 index 0000000..94c15c8 --- /dev/null +++ b/12/QG-2007/maxiseq.c @@ -0,0 +1,36 @@ +#include <math.h> +#include <stdio.h> + +char is_in_u(long x) +{ + long y = (long) sqrt(x *= 2); + return y * (y + 1) == x; +} + +int main() +{ + FILE *f = fopen("MAXISEQ.INP", "r"); + short n, i, max = 0, start = -1; + long a, b; + + fscanf(f, "%hd\n", &n); + for (i = 0; i < n; i++) { + b = a; + fscanf(f, "%ld\n", &a); + if (!is_in_u(a) || start >= 0 && b > a) { + start = -1; + continue; + } + if (start < 0) + start = i; + if (i - start >= max) + max = i - start + 1; + } + fclose(f); + + f = fopen("MAXISEQ.OUT", "w"); + fprintf(f, "%hd\n", max); + fclose(f); + + return 0; +} |