Submission #1265250

#TimeUsernameProblemLanguageResultExecution timeMemory
1265250silentloopUnscrambling a Messy Bug (IOI16_messy)C++20
20 / 100
7 ms328 KiB
#include <bits/stdc++.h>
#define ll long long
#define sz(x) int(x.size())
#define pb push_back
#define se second
#define fr first
#define mp make_pair
#define all(x) x.begin(), x.end()
using namespace std;

void add_element(string x);
void compile_set();
bool check_element(string x);

ll N;

bool can(vector<int>p, vector<string>ap)
{
    ll i, j, n=N;
    map<string,bool>check;
    string num="";
    num.resize(n,'0');
    for(i=0; i<n; i++)
    {
        num[i]='1';
        string fin=num;
        for(j=0; j<n; j++)
            fin[j]=fin[p[j]];
        check[fin]=1;
    }
    vector<string>v;
    num="";
    num.resize(n,'0');
    for(i=0; i<n; i++)
    {
        num[i]='1';
        if(check[num]==0)
            v.pb(num);
    }
    return ap==v;
}

std::vector<int> restore_permutation(int n, int w, int r)
{
    ll i, j;
    N=n;
    string num="";
    num.resize(n,'0');
    for(i=0; i<n; i++)
    {
        num[i]='1';
        add_element(num);
    }
    compile_set();
    ll cant=0;
    vector<string>v;
    num="";
    num.resize(n,'0');
    for(i=0; i<n; i++)
    {
        num[i]='1';
        if(check_element(num)==0)
            v.pb(num);
    }

    vector<int>ans;
    for(i=0; i<n; i++)
        ans.pb(i);
    if(sz(v)==0)
        return ans;
    for(i=0; i<n; i++)
    {
        for(j=i+1; j<n; j++)
        {
            swap(ans[i],ans[j]);
            if(can(ans,v))
                return ans;
            swap(ans[i],ans[j]);
        }
    }
    return ans;
}

Compilation message (stderr)

messy.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
messy_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...