Problem E: Jolly Jumpers
1 4 2 3is 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
4 1 4 2 3 5 1 4 2 -1 6
Sample Output
Jolly Not jolly
题意是要相邻的两个数的绝对值在[1,n),而且这个范围内的每个数都要出现一次。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int vis[3002];
int main()
{
int n, a, b, ok, t, m;
while(scanf("%d", &n) != EOF){
scanf("%d", &a);
m = n; ok = 1;
memset(vis, 0, sizeof(vis));
while(--n){
scanf("%d", &b);
if(ok == 0) continue;
if((t = abs(a - b)) == 0 || t >= m || vis[t])
ok = 0;
a = b; vis[t] = 1;
}
printf(ok ? "Jolly\n" : "Not jolly\n");
}
return 0;
}