Jolly Jumpers |
Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB |
Total submit users: 2174, Accepted users: 1945 |
Problem 10050 : No special judgement |
Problem description |
A sequence of n > 0 integers is called a jolly jumper if the absolute values of the difference between successive elements take on all the values 1 through n-1. For instance, 1 4 2 3 is a jolly jumper, because the absolutes differences are 3, 2, and 1 respectively. The definition implies that any sequence of a single integer is a jolly jumper. You are to write a program to determine whether or not each of a number of sequences is a jolly jumper. |
Input |
Each line of input contains an integer n < 3000 followed by n integers representing the sequence. |
Output |
For each line of input, generate a line of output saying "Jolly" or "Not jolly". |
Sample Input |
|
Sample Output |
|
Problem Source |
Waterloo 2000 |
AC:
#include<cstdio>
#include<cstring>
#include<cstdlib>
const int MAX_N = 3005;
int flag[MAX_N];
int n, tmp, last;
int main()
{
while (scanf("%d", &n) != -1)
{
memset(flag, 0, sizeof(flag));
for (int i = 0; i < n; ++i)
{
scanf("%d", &tmp);
if (i != 0) flag[std::abs(tmp - last)] = 1;
last = tmp;
}
if (n == 1) { printf("Jolly\n"); continue; }
for (int i = 1; i <= n - 1; ++i)
{
if (!flag[i]) {
printf("Not jolly\n"); break;
}
else if (i == n - 1)
{
printf("Jolly\n");
}
}
}
return 0;
}