結果
| 問題 | 
                            No.138 化石のバージョン
                             | 
                    
| コンテスト | |
| ユーザー | 
                             monburan_0401
                         | 
                    
| 提出日時 | 2018-09-03 06:48:47 | 
| 言語 | C  (gcc 13.3.0)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 1,264 bytes | 
| コンパイル時間 | 395 ms | 
| コンパイル使用メモリ | 30,080 KB | 
| 実行使用メモリ | 5,248 KB | 
| 最終ジャッジ日時 | 2024-10-05 10:19:01 | 
| 合計ジャッジ時間 | 1,473 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge3 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | WA * 3 | 
| other | WA * 33 | 
ソースコード
/*	数直線上の整数座標上に𝑁個の点がある。
その中から同じ座標ではない2点を選んで、その2点の距離を求める。
距離は、𝑖番目の点の座標を𝑋𝑖、𝑗番目の点の座標を𝑋𝑗とすると 、
絶対値|𝑋𝑖−𝑋𝑗|とする。
この時、最小の距離となる2点を選ぶとして、選んだ2点間の最小距離を求めてください。
条件にあう2点を選べなかったら0を出力してください。*/
#include <stdio.h>
#include <stdlib.h>
int main(void){
	int N;
	int num[100000];
	int min;		//	求める最小値
	int L = 0;
	
	scanf("%d",&N);
	for(int i = 0; i < N; i++){
		scanf("%d",&num[i]);
		
		if(i == 0){
			min = num[0];
		} else if (min < num[i]){
			min = num[i] ;		//	最大値の値を入れておく。
		}
		//	printf("%d回目はmin = %d\n",i,min);		//	check
	}
	min *= 2;		//	num[2] = {0,100}を回避するため、倍にする。
	
	for(int j = 0; j < N; j++){
		for(int k = 0; k < N; k++){
			if(k == j){
				continue;
			} 
			L = abs(num[k] - num[j]);
			if( (L < min) && (L != 0) ){
				min = L;
			}
		}
	}
	
	for(int l = 0; l < N; l++){
		if(min == num[l] * 2){
			printf("0\n");
			return 0;
		}
	}
	
	printf("%d\n",min);
	
	return 0;
}
            
            
            
        
            
monburan_0401