about summary refs log tree commit diff
path: root/12/QG-2007/maxiseq.c
blob: 94c15c869efd1aa00e6d3b54c45ae74b84c8c6a9 (plain) (blame)
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
26
27
28
29
30
31
32
33
34
35
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;
}