Submission #1183582

#TimeUsernameProblemLanguageResultExecution timeMemory
1183582attkyCarnival (CEOI14_carnival)C++20
0 / 100
0 ms320 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;

void findSame(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;

    if(res1 == res2) {
        if(area.size() == 1) {
            costume[area.start] = iCost;
            vu[area.start] = true;
        }
        else {
            findSame(n, area.left());
            findSame(n, area.right());
        }
    }
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n;
    cin >> n;
    for(int loop = 1; loop <= n; ++loop) {
        vu[loop] = false;
    }

    for(int loop = 1; loop <= n; ++loop) {
        if(!vu[loop]) {
            vu[loop] = true;
            costume[loop] = iCost;
            findSame(loop, {loop+1, n+1});
            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...