Problem:
家庭菜園に野菜を植えることにしました。n 粒の種があったので1日に1粒ずつ、n 日かけて n 粒の種をまきました。どの種からも芽が出て、すくすくと育っています。収穫の時期が待ち遠しいものです。

ある日、いつものように苗に水やりをしていると、おかしなことに気づきました。n 本の野菜の苗があるはずなのに、1本多いのです。雑草が生えてきてしまいました。直ちに引っこ抜きたいのですが、困ったことにどの苗もよく似ていて、野菜と雑草の見分けがつきません。

手がかりになるのは、野菜の成長速度です。この野菜は、種をまいてからずっと、1日に決まった長さだけ伸び続けるのです。しかし、この「決まった長さ」というのが何センチメートルなのかはわかりません。また、最初の種を何日前にまいたのかも忘れてしまいました。苗は一列に並んでいますが、唯一覚えているのは、種をまくとき毎日一粒ずつ右から順にまいていったことだけです。

n＋１本の苗の長さを入力し、雑草の長さを出力するプログラムを作成して下さい。

入力

入力は複数のデータセットからなる。入力の終わりはゼロ１つ行で示される。入力は以下の形式で与えられる。

n
h1 h2 h3 ... hn+1

１行目の n (4 ≤ n ≤ 100) は野菜の苗の数を表す整数である。２行目は１つの空白で区切られた n+1 個の整数を含み、 hi (1 ≤ hi ≤ 109)は左からi番目の苗の長さを示す。

h1 h2 ... hn+1 が等差数列になっているような入力は与えられない。

データセットの数は 500 を超えない。

出力

各データセットごとに雑草の長さを出力する 。

入力例

5
1 2 3 6 4 5
6
1 3 6 9 12 15 18
4
5 7 9 11 12
0

出力例

6
1
12

Solution in JAVA (judge verdict: Accepted)

import java.util.*;

class Main{
    public static void main(String args[]){
        Scanner sc=new Scanner(System.in);
        while(true){
            int n=sc.nextInt();
    	    if(n==0){
    		    break;
    	    }
    	    int a[]=new int[n+1];
    	    for(int i=0;i<=n;i++){
                a[i]=sc.nextInt();
            }
            if(n==4){
                if(a[3]-a[2]==a[2]-a[1]&&a[2]-a[1]==a[1]-a[0]){
                    System.out.println(a[4]);
                }else if(a[4]-a[2]==a[2]-a[1]&&a[2]-a[1]==a[1]-a[0]){
                    System.out.println(a[3]);
                }else if(a[4]-a[3]==a[3]-a[1]&&a[3]-a[1]==a[1]-a[0]){
                    System.out.println(a[2]);
                }else if(a[4]-a[3]==a[3]-a[2]&&a[3]-a[2]==a[2]-a[0]){
                    System.out.println(a[1]);
                }else{
                    System.out.println(a[0]);
                }
            }else if(n>4){
                int sub=0;
                int b[]=new int[5];
                for(int i=0;i<5;i++){
                    b[i]=a[i+1]-a[i];
                }
                Arrays.sort(b);
                sub=b[2];
                for(int i=0;i<n;i++){
                    if(a[i+1]-a[i]!=sub){
                        if(i==n-1){
                            System.out.println(a[i+1]);
                            break;
                        }else if(a[i+2]-a[i+1]!=sub){
                            System.out.println(a[i+1]);
                            break;
                        }else{
                            System.out.println(a[i]);
                            break;
                        }
                    }
                }
            }
        }
    }
}