Closest number, C++
Условието на задачата: Write a program which finds the two closest (by value) integer numbers in an array and prints the absolute difference between them.
Input:
5
1 105 10 100 3
Output:
2 (The closest numbers are 1 and 3, abs(1,3) = 2)
Това е начинът, по който мисля, че трябва да се реши задачата:
int n;
    cin>>n;
    int arr[n];
    int i;
    for (i=0; i<n; i++)
    {
        cin>>arr[i];
    }
    int k = INT_MAX;
    int m;
    for(i=0; i<n; i++)
    {
        m = abs(arr[i], arr[i+1]);
        if (m < k)
        {
            k = m;
        }
        cout<<endl;
        cout<<k<<endl;
    }
Може ли някой да ми помогне, защото явно това не е правилният код. Благодаря Ви!
Това няма да работи, ако n=1, т.е. ако имаме само едно число. Точно това е уловката в тази задача. Миналата седмица един колега беше пуснал тема за това. Аз съм го направил така
Единствено ми прави впечетление, дали i не трябва да върти до n - 1 ? Но това ще спести само 4 операции, със същия резултат от кода :)
Твоят код работи добре за повече числа. Обаче при n=1 джадж очаква 0 (това не го пише в условието на задачата), а твоят изход е INT_MAX. Един от тестовете е такъв и затова някои хора вземат само 80/100.
П.П. А моя код е на ниво Софтюни :)