Решение задачи Удалить наименьшее с Codeforces

Без пояснения   Просмотров: 53


Вам дан массив a, состоящий из n положительных (больших нуля) целых чисел.
За один ход вы можете выбрать два индекса i и j (i≠j) таких, что абсолютная разность между \( a_i \) и \( a_j \) не превосходит единицу
\( \left|a_{\dot{i}}-a_j\right|\le1 \), и удалить наименьший из этих двух элементов. Если два элемента равны, вы можете удалить любой из них (но только один).

Код

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int t, n;
    cin >> t;
    for(int i = 0; i < t; ++i){
        cin >> n;
        vector<int> a(n);
        for(int j = 0; j < n; ++j)
            cin >> a[j];
        sort(a.begin(), a.end());
        bool b = true;
        for(int j = 1; j < a.size(); ++j)
            if(abs(a[j] - a[j - 1]) > 1){
                b = false;
                break;
            }
        if(b)
            cout << "YES" << endl;
        else
            cout << "NO" << endl;
    }
    return 0;
}

         

Администратор Photo Автор: Администратор


Код

t = int(input())
for i in range(t):
    n = int(input())
    a = map(int, input().split())
    a = list(a)
    a.sort()
    b = True
    for j in range(1, len(a)):
        if abs(a[j] - a[j - 1]) > 1:
            b = False
            break
    if b:
        print("YES")
    else:
        print("NO")

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться