Submission details
Task:Blocks
Sender:MRiekasius
Submission time:2026-04-16 14:56:32 +0300
Language:C++ (C++20)
Status:COMPILE ERROR

Compiler report

input/code.cpp: In function 'std::pair<bool, std::vector<int> > dfs(std::vector<int>&, std::vector<int>&, int)':
input/code.cpp:6:22: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
    6 |     if(blokai.size() == n){
      |        ~~~~~~~~~~~~~~^~~~
input/code.cpp:7:33: error: 'k' was not declared in this scope
    7 |         vector<int> SpalvosSuma(k, 0), SpalvosKiekis(k, 0);
      |                                 ^
input/code.cpp:15:87: error: 'reikiamaReiksmeKartDu' was not declared in this scope
   15 |             if(sumaKartDu % SpalvosKiekis[i] != 0 || sumaKartDu / SpalvosKiekis[i] != reikiamaReiksmeKartDu){
      |                                                                                       ^~~~~~~~~~~~~~~~~~~~~
input/code.cpp:21:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'...

Code

#include <bits/stdc++.h>
using namespace std;


pair<bool, vector<int>> dfs(vector<int>& spalvuKiekiai, vector<int>& blokai, int n){
    if(blokai.size() == n){
        vector<int> SpalvosSuma(k, 0), SpalvosKiekis(k, 0);
        bool buvoTink = true;
        for(int i = 0; i < n; i++){
           SpalvosSuma[blokai[i] - 1] += i + 1;
           SpalvosKiekis[blokai[i] - 1]++;
        }
        for(int i = 0; i < k; i++){
            const int sumaKartDu = SpalvosSuma[i] * 2;
            if(sumaKartDu % SpalvosKiekis[i] != 0 || sumaKartDu / SpalvosKiekis[i] != reikiamaReiksmeKartDu){
                buvoTink = false;
            }
        }
        return {buvoTink, blokai};
    }
    for(int i = 0; i < spalvuKiekiai.size(); i++){
        if(spalvuKiekiai[i] > 0){
            spalvuKiekiai[i]--;
            blokai.push_back(i);
            auto ans = dfs(spalvuKiekiai, blokai, n);
            if(ans.first == true) return ans;
            blokai.pop_back();
            spalvuKiekiai[i]++;
        }
    }
    return {false, blokai};
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int t;
    cin >> t;
    while(t--){
        int n, k;
        cin >> n >> k;
        vector<int> spalvuKiekiai(k);
        vector<int> ans(n);

        for(int i = 0; i < n; i++){
            int x;
            cin >> x;

            spalvuKiekiai[x - 1]++;
        }
        vector<int> blokai;
        auto ans = dfs(spalvuKiekiai, blokai, n);
        if(ans.first == true){
            cout << "YES\n";
            for(auto i: ans.second) cout <<i << " ";
            cout << "\n";
        }
        cout << "NO\n";
    }

}