blob: eba57c4f62234276ef30351e399288ea997cde12 (
plain) (
tree)
|
|
#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);
}
|