C. Color the Picture | Round #810 Div.2

LONGNEW·2022년 8월 3일
0

CP

목록 보기
104/155

https://codeforces.com/contest/1711/problem/C
시간 1초, 메모리 256MB

input :

  • t (1 ≤ t ≤ 104)
  • n m k (3 ≤ n, n ≤ 109, 1 ≤ k ≤ 105)
  • a1 a2 ... ai (1 ≤ ai ≤ 109)

output :

  • print "Yes" (without quotes) if it is possible to color a beautiful picture. Otherwise, print "No" (without quotes).

조건 :


예제

wrong

  1. 일단 문제를 제대로 읽지 않았다. (본인과 동일한 색으로 이루어져 있어야 하기 떄문에 2번째 예제도 No를 출력해야한다.)

idea

해설

주의 사항

  1. cnt를 더한 결과가 int 이상이 될 수 있다.
#include <iostream>
#include <bits/stdc++.h>

using namespace std;

bool check(int n, int m, vector<int> data) {
    long long cnt = 0, odd = 0;

    for (int item : data) {
        int result = item / m;
        if (result >= 2)
            cnt += result;
        if (result >= 3)
            odd = 1;
    }

    if (n % 2 == 0){
        if (cnt >= n) return true;
        else return false;
    }else{
        if (cnt >= n && odd) return true;
        else return false;
    }
}

void prologue() {
    ios_base::sync_with_stdio(0);
    cin.tie(nullptr);
}

int main() {
    prologue();

    int t;
    cin >> t;

    for (int i = 0; i < t; ++i) {
        int n, m, k;
        vector<int> data;

        cin >> n >> m >> k;
        for (int j = 0; j < k; ++j) {
            int temp;
            cin >> temp;
            data.push_back(temp);
        }

        if (check(n, m, data) || check(m, n, data))
            cout << "Yes\n";
        else
            cout << "No\n";
    }
    return 0;
}

0개의 댓글