Submission #1183592

#TimeUsernameProblemLanguageResultExecution timeMemory
1183592attkyCarnival (CEOI14_carnival)C++20
0 / 100
8 ms408 KiB
#include <bits/stdc++.h>

using namespace std;

struct inter {
    int start, end;
    
    int size() {
        return end - start;
    }

    int mid() {
        return (start + end) / 2;
    }

    inter left() {
        return {start, mid()};
    }

    inter right() {
        return {mid(), end};
    }
};

bool vu[200];
int costume[200], iCost = 1;

bool isSame(int n, inter area) {
    int res1, res2;
    
    cout << area.size() + 1 << " " << n << " ";
    for(int loop = area.start; loop < area.end; ++loop) {
        cout << loop << " ";
    }
    cout << '\n';
    cin >> res1;

    cout << area.size() << " ";
    for(int loop = area.start; loop < area.end; ++loop) {
        cout << loop << " ";
    }
    cout << '\n';
    cin >> res2;
    return (res1 == res2);
}

int main() {
    int n;
    cin >> n;
    for(int loop = 1; loop <= n; ++loop) {
        vu[loop] = false;
    }

    vector<inter> q;

    for(int loop = 1; loop <= n; ++loop) {
        if(!vu[loop]) {
            vu[loop] = true;
            costume[loop] = iCost;
            q.push_back({loop+1, n+1});
            while(q.size() > 0) {
                inter area = q.back();
                q.pop_back();
                if(isSame(loop, area)) {
                    if(area.size() == 1) {
                        costume[area.start] = iCost;
                        vu[area.start] = true;
                    }
                    else {
                        q.push_back(area.right());
                        q.push_back(area.left());
                    }
                }
            }
            iCost++;
        }
    }

    cout << "0 ";

    for(int loop = 1; loop <= n; ++loop) {
        cout << costume[loop] << " ";
    }
    cout << '\n';

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...