Solution of 10038 - Jolly Jumpers

Problem Description
source:https://uva.onlinejudge.org/external/100/10038.html

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

Solution:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<queue>
using namespace std;
int main()
{
    int n, i,a[3005],b[3005],dif;
    while(scanf("%d",&n)==1)
    {
        priority_queue<int, vector<int>, greater<int> > mypq;
        for(i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
            if(i>1)
            {
                dif=a[i-1]-a[i];
                if(dif<0)
                    dif*=-1;
                mypq.push(dif);
            }

        }
        for(i=1;i<=n-1;i++)
        {
            if(i==mypq.top())
                mypq.pop();
            else
                break;
        }
        if(mypq.empty())
            printf("Jolly\n");
        else
            printf("Not jolly\n");

    }
    return 0;
}
image

No comments:

Post a Comment

Write your comment - Share Knowledge and Experience