Submission #1177622

#TimeUsernameProblemLanguageResultExecution timeMemory
1177622ZeroCoolZagonetka (COI18_zagonetka)C++20
100 / 100
28 ms456 KiB
#include <bits/stdc++.h>
#define int long long
#define ll long long
#define ld long double
#define ar array
#define all(v) v.begin(), v.end()

using namespace std;





const int N = 2e2 + 20;
const int LOG = 20;
const int INF = 1e12;
const int MOD = 1e9 + 7;

void chmin(int &x,int y){x = min(x, y);};
void chmax(int &x,int y){x = max(x, y);};
void mm(int &x){x = (x % MOD + MOD) % MOD;};

int n;

bool g[N][N];
int ans[N];
int T = 1;
bool vis[N];
void dfs1(int x){
    if(vis[x])return;
    vis[x] = 1;
    for(int i = 0;i < n;i++){
        if(g[x][i])dfs1(i);
    }
    ans[x] = T++;
}

void dfs2(int x){
    if(vis[x])return;
    vis[x] = 1;
    for(int i = 0;i < n;i++){
        if(g[i][x])dfs2(i);
    }
    ans[x] = T--;
}

signed main(){ios_base::sync_with_stdio(false);cin.tie(0);
    cin>>n;
    int A[n];
    for(int i = 0;i < n;i++)cin>>A[i];
    int pos[n + 1];
    for(int i = 0;i < n;i++)pos[A[i]] = i;
    for(int i = 1;i <= n;i++){
        vector<int> X, Y{pos[i]};
        for(int j = i + 1;j <= n;j++){
            int Q[n];
            for(int x = 0;x < n;x++)Q[x] = A[x];
            int c = i;
            for(auto u: X)Q[u] = c++;
            Q[pos[j]] = c++;
            for(auto u: Y)Q[u] = c++;
            cout<<"query ";
            for(int x = 0;x < n;x++)cout<<Q[x]<<" ";
            cout<<endl;
            int k;
            cin>>k;
            g[pos[j]][pos[i]] = !k;
            if(k)X.push_back(pos[j]);
            else Y.push_back(pos[j]);
        }
    }
    cout<<"end"<<endl;
    memset(vis, 0, sizeof vis);
    T = 1;
    for(int i = 0;i < n;i++)dfs1(i);
    for(int i = 0;i < n;i++)cout<<ans[i]<<" ";
    cout<<endl;
    memset(vis, 0, sizeof vis);
    T = n;
    for(int i = 0;i < n;i++)dfs2(i);
    for(int i = 0;i < n;i++)cout<<ans[i]<<" ";
    cout<<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...