summaryrefslogtreecommitdiffstats
path: root/šola/p2/dn/DN04b_63230317.c
blob: eba57c4f62234276ef30351e399288ea997cde12 (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
37
38
39
40
41
42
43
44
#include <stdio.h>
#include <stdbool.h>
#include <limits.h>
#include <stdlib.h>
int main (void) {
	unsigned long long n, k;
	unsigned long long s = 0;
	scanf("%llu %llu", &n, &k);
	unsigned long long * števila = calloc(n+1, sizeof *števila);
	unsigned long long * količine = calloc(n+1, sizeof *količine);
	int unikatnih = 0;
	for (unsigned long long i = 0; i < n; i++) {
		unsigned long long element;
		scanf("%llu", &element);
		if (!unikatnih || števila[unikatnih-1] != element) {
			količine[unikatnih] = 1;
			števila[unikatnih++] = element;
		} else
			količine[unikatnih-1]++;
	}
	int l = 0;
	int d = unikatnih-1;
	do {
		if (števila[l] + števila[d] == k) {
			if (števila[l] == števila[d]) {
				s += (količine[l]-1)*(količine[l])/2;
				break;
			}
			s += količine[l]*količine[d];
			if (l == d-1)
				break;
			l++;
			d--;
			continue;
		}
		if (l == d)
			break;
		if (števila[l]+števila[k] < k)
			l++;
		else
			d--;
	} while (true);
	printf("%llu\n", s);
}