Problem:
Score: 200 points

Problem Statement

A country decides to build a palace.

In this country, the average temperature of a point at an elevation of x meters is T-x \times 0.006 degrees Celsius.

There are N places proposed for the place. The elevation of Place i is H_i meters.

Among them, Princess Joisino orders you to select the place whose average temperature is the closest to A degrees Celsius, and build the palace there.

Print the index of the place where the palace should be built.

It is guaranteed that the solution is unique.

Constraints

1 \leq N \leq 1000

0 \leq T \leq 50

-60 \leq A \leq T

0 \leq H_i \leq 10^5

All values in input are integers.

The solution is unique.

Input

Input is given from Standard Input in the following format:

N
T A
H_1 H_2 ... H_N

Output

Print the index of the place where the palace should be built.

Sample Input 1

2
12 5
1000 2000

Sample Output 1

1

The average temperature of Place 1 is 12-1000 \times 0.006=6 degrees Celsius.

The average temperature of Place 2 is 12-2000 \times 0.006=0 degrees Celsius.

Thus, the palace should be built at Place 1.

Sample Input 2

3
21 -11
81234 94124 52141

Sample Output 2

3

Solution in Rust (1.42.0) (judge verdict: Wrong Answer)

#![allow(dead_code)]
#![allow(unused_imports)]
use std::cmp::{min, max};
use std::io::{BufWriter, stdin, stdout, Write};
const BITS: usize = 19;

#[derive(Default)]
struct Scanner {
    buffer: Vec<String>
}
impl Scanner {
    fn next<T: std::str::FromStr>(&mut self) -> T {
        loop {
            if let Some(token) = self.buffer.pop() {
                return token.parse().ok().expect("Failed parse");
            }
            let mut input = String::new();
            stdin().read_line(&mut input).expect("Failed read");
            self.buffer = input.split_whitespace().rev().map(String::from).collect();
        }
    }
}

fn main() {
    let mut scan = Scanner::default();
    let out = &mut BufWriter::new(stdout());

    let n: i32 = scan.next::<i32>();
    let t: i32 = scan.next::<i32>();
    let a: i32 = scan.next::<i32>();

    let mut arr: Vec<i32> = Vec::new();

    for _i in 0..n {
        let input: i32 = scan.next::<i32>();
        arr.push(input);
    }

    let mut result: usize = 0;
    let mut resval: f64 = -1.00 as f64;
    let mut temps: Vec<f64> = Vec::new();

    let aa = a as f64;

    for (index, value) in arr.iter().enumerate() {
        let tmp = temp(&t, &value);
        temps.push(tmp);
        if resval == -1.0 {
            resval = (aa - tmp).abs();
        }
        if (aa - tmp).abs() < resval {
            result = index;
        }
    }

    writeln!(out, "{}", result+1);
}

fn temp(t: &i32, x: &i32) -> f64 {
    let tt = *t as f64;
    let xx = *x as f64;
    tt - (xx * 0.006)
}