Submission #1310124

#TimeUsernameProblemLanguageResultExecution timeMemory
1310124mohammadyayCarnival (CEOI14_carnival)C++20
100 / 100
8 ms408 KiB
#include <bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ordered_set tree<ll, null_type, less_equal<ll>, rb_tree_tag,tree_order_statistics_node_update>
//#define endl '\n'
using ll = long long;
#define pb push_back
#define pF first
#define pS second
#define SP <<' '<<
#define all(x) (x).begin(), (x).end()
const ll mod7 = 1e9+7, mod9= 998244353, MAX_N = 10000000;
//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
ll linkls[300], col[300];
ll query(ll n, ll l, ll r) {
    cout << r-l+2 << " ";
    cout << n << " ";
    for (int i=l; i<r; i++) {
        cout << i << " ";
    } cout << r << endl;
    ll x; cin>>x;
    return x;
}
ll query(ll l, ll r) {
    cout << r-l+1 << " ";
    for (int i=l; i<r; i++) {
        cout << i << " ";
    } cout << r << endl;
    ll x; cin>>x;
    return x;
}
int main() {
    //ios::sync_with_stdio(0); cin.tie(NULL);
    ll n; cin>>n;
    for (int i=1; i<=n; i++) {
        ll l = i+1, r = n;
        while (l <= r) {
            ll mi = (l+r)/2;
            bool equal = 0;
            if (query(l , mi) == query(i, l, mi)) equal = 1;

            if (equal) {
                if (l == r) {
                    linkls[i] = l;
                    break;
                }
                r = mi;
            }
            else l = mi+1;
        }
    }
    vector<bool> vis(n+1, 0);
    ll color = 1;
    for (int i=1; i<=n; i++) {
        if (vis[i]) continue;
        ll x = i;
        while (x != 0) {
            col[x] = color;
            vis[x] = 1;
            x = linkls[x];
        }
        color++;
    }
    cout << 0 << " ";
    for (int i=1; i<n; i++) {
        cout << col[i] << " ";
    } cout << col[n] << endl;
}
#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...