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);
}
|