2575:Jolly Jumpers

keyword

数列 C++

概要

長さnの数列が与えられる。隣接する要素の差を列挙したとき1,…,n-1が全て出現するかどうかを求める問題。
愚直に書くだけで良い。配列使って書くときはsegmentation faultに注意。

int main(){
    static int ds[3000];
    int i, cur, next, dif, n;
    while(scanf("%d",&n)!=EOF){
        scanf("%d",&next);
        REP(i,3000) ds[i] = 0;
        REP(i,n-1){
            scanf("%d",&cur);
            dif = abs(next-cur);
            if(0<dif && dif<n) ds[dif] = 1;
            next = cur;
        }
        if(accumulate(ds+1, ds+n, 0) == n-1)printf("Jolly\n");
        else printf("Not jolly\n");
    }
    return 0;
}