Problem:
﻿Score: 100 points

Problem Statement

In AtCoder city, there are five antennas standing in a straight line. They are called Antenna A, B, C, D and E from west to east, and their coordinates are a, b, c, d and e, respectively.

Two antennas can communicate directly if the distance between them is k or less, and they cannot if the distance is greater than k.

Determine if there exists a pair of antennas that cannot communicate directly.

Here, assume that the distance between two antennas at coordinates p and q (p < q) is q - p.

Constraints

a, b, c, d, e and k are integers between 0 and 123 (inclusive).

a < b < c < d < e

Input

Input is given from Standard Input in the following format:

a
b
c
d
e
k

Output

Print :( if there exists a pair of antennas that cannot communicate directly, and print Yay! if there is no such pair.

Sample Input 1

1
2
4
8
9
15

Sample Output 1

Yay!

In this case, there is no pair of antennas that cannot communicate directly, because:

the distance between A and B is 2 - 1 = 1

the distance between A and C is 4 - 1 = 3

the distance between A and D is 8 - 1 = 7

the distance between A and E is 9 - 1 = 8

the distance between B and C is 4 - 2 = 2

the distance between B and D is 8 - 2 = 6

the distance between B and E is 9 - 2 = 7

the distance between C and D is 8 - 4 = 4

the distance between C and E is 9 - 4 = 5

the distance between D and E is 9 - 8 = 1

and none of them is greater than 15. Thus, the correct output is Yay!.

Sample Input 2

15
18
26
35
36
18

Sample Output 2

:(

In this case, the distance between antennas A and D is 35 - 15 = 20 and exceeds 18, so they cannot communicate directly.
Thus, the correct output is :(.

Solution in C (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
#include <stdlib.h>

typedef unsigned long long u64_t;

typedef struct _tmp_t {
  u64_t val;
} tmp_t;

int compare(const void *a, const void *b)
{
  tmp_t *x;
  tmp_t *y;
  u64_t  X,Y;

  x = (tmp_t *)a;
  y = (tmp_t *)b;

  X = x->val;
  Y = y->val;

  if (X < Y) return 1;
  if (X > Y) return -1;

  return 0;
}

void qsort_tmp (tmp_t *array, int size)
{
  qsort(array, size, sizeof(tmp_t), compare);
}

#define SIZE 1000

tmp_t A[SIZE];
tmp_t B[SIZE];
tmp_t C[SIZE];

int main()
{
  int cnt;
  int i, X,Y,Z,K;
  int total = 0;
  int x,y,z;
  u64_t An, Bn, Cn;
  tmp_t *result;

  cnt = scanf("%d %d %d %d", &X, &Y, &Z, &K);

  for (i=0; i<X; i++) {
    cnt = scanf("%lld", &A[i].val);
  }
  for (i=0; i<Y; i++) {
    cnt = scanf("%lld", &B[i].val);
  }
  for (i=0; i<Z; i++) {
    cnt = scanf("%lld", &C[i].val);
  }

  qsort_tmp(A, X);
  qsort_tmp(B, Y);
  qsort_tmp(C, Z);

  result = calloc((X*Y*Z), sizeof(tmp_t));

  i = 0;
  for (x=0; x<X; x++) {
    for (y=0; y<Y; y++) {
      for (z=0; z<Z; z++) {
        result[i].val = (A[x].val + B[y].val + C[z].val);
        i++;
      }
    }
  }

  qsort_tmp(result, i);
        
  for (i=0; i<K; i++) {
    printf("%lld\n", result[i].val);
  }

  return 0;
}