2190: 有趣的跳跃

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:5 解决:4

题目描述

一个长度为n(n>0)的序列中存在“有趣的跳跃”当且仅当相邻元素的差的绝对值经过排序后正好是从1到(n-1)。

例如,1 4 2 3存在“有趣的跳跃”,因为差的绝对值分别为3,2,1。

当然,任何只包含单个元素的序列一定存在“有趣的跳跃”。

你需要写一个程序判定给定序列是否存在“有趣的跳跃”。

输入

一行,第一个数是n(0 < n < 3000),为序列长度,接下来有n个整数,依次为序列中各元素,各元素的绝对值均不超过1,000,000,000。

输出

一行,若该序列存在“有趣的跳跃”,输出"Jolly",否则输出"Not jolly"。

样例输入 复制

4 1 4 2 3

样例输出 复制

Jolly

提示

#include<bits/stdc++.h>
using namespace std;
int a[3010],b[3010],n;

int main(){
    cin>>n;
    if (n==1){
    	cout<<"Jolly"<<endl;
    	return 0;
	}
	for (int i=1;i<=n;i++) {
		cin>>a[i];
	}
	for (int i=2;i<=n;i++) {
		b[i-1]=abs(a[i]-a[i-1]);
	}
	sort(b+1,b+n);
	for (int i=1;i<=n-1;i++) {
		if (b[i]!=i) {
			cout<<"Not jolly"<<endl;
			return 0;
		}
	}
	cout<<"Jolly"<<endl;
	return 0;
}