想用类似队列的方式做,但是60分,两样例能过
查看原帖
想用类似队列的方式做,但是60分,两样例能过
534532
AnthonyEric楼主2022/4/1 22:57
#include<bits/stdc++.h>
using namespace std;
int n , a[114514], b[114514];
bool camp(int x,int y){
	return x > y;
}
int main(){
	int ans = 0,q=0;
	cin >> n;
	a[0] = 0;
	for(int i = 1; i <= n; i++){
		cin >> a[i];
		b[q++] = abs(a[i]-a[i-1]); 
	} 
	sort(b+1,b+n+1);
	for(int i = 1; i <= n - 1; i++){
		if(i != b[i]){
			cout << "Not jolly";
			return 0;
		}
	}
	cout << "Jolly";
	
	return 0;
}

我的想法是,在读入数组a的过程中,计算相邻两个差的绝对值

   a[0] = 0;
	for(int i = 1; i <= n; i++){
		cin >> a[i];
		b[q++] = abs(a[i]-a[i-1]); 
	} 

这一段,当i = 1时 b[0] = a[1] + a[0] (后面不需要b[0],所以可以忽略)

之后给数组b排序,从小到大,主次和区间1到n得每个数作比较,如果有不同就退出

2022/4/1 22:57
加载中...