ACM/ICPC Judge Online of HUNAN UNIVERSITY (hnu.edu.cn)
Jolly Jumpers |
Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB |
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 |
4 1 4 2 3 5 1 4 2 -1 6 |
Sample Output |
Jolly Not jolly |
Problem Source |
Waterloo 2000 |
要注意判断条件是两两之间的绝对值是不是1~n-1,一开始以为是<n就行了,WA了好几次。。。
AC代码如下:
#include <iostream>
using namespace std;
int l[100000010] = {0};
int abss[1000010] = {0};
bool func(int m, int *l, int size) {
for (int i = 0; i < size; i++) {
if (l[i] == m)
return true;
}
return false;
}
int main() {
int n;
while (cin >> n) {
for (int i = 0; i < n; i++) {
cin >> l[i];
}
bool flag = 1;
for (int i = 0; i < n - 1; i++) {
abss[i] = abs(l[i] - l[i + 1]);
}
for (int j = 1; j < n; j++) {
if (func(j, abss, n) == false)
flag = 0;
}
if (flag || n == 1)
cout << "Jolly" << endl;
else
cout << "Not jolly" << endl;
}
}