Submission #30466

# Submission time Handle Problem Language Result Execution time Memory
30466 2017-07-23T11:55:10 Z bilelg Unscrambling a Messy Bug (IOI16_messy) C++14
100 / 100
6 ms 560 KB
#include <bits/stdc++.h>
#include "messy.h"
using namespace std;
void Reverse(string & s, int i)
{
    s[i] = '1'-s[i]+'0';
}
vector<int> restore_permutation(int n, int w, int r)
{
    string s(n,'0');
    /*for(int i=0;i<n;i++)
        s[i]='0';*/
    int bitmask = n>>1;
    while(bitmask>0)
    {
        string S(s);
        fill(s.begin(),s.end(),'0');
        for(int i=0;i<n;i++)
            if(i&bitmask)
        {
            Reverse(S,i);
            add_element(S);
            Reverse(S,i);
            s[i] = '1';
        }
        bitmask>>=1;
    }
    fill(s.begin(),s.end(),'1');
    s[2] = '0';
    add_element(s);
    compile_set();
    fill(s.begin(),s.end(),'0');
    vector<int> p(n,0);
    bitmask = n>>1;
    //set<string>used;
    while(bitmask>0)
    {
        string S(s);
        fill(s.begin(),s.end(),'0');
        for(int i=0;i<n;i++)
        {
            Reverse(S,i);
            //if(used.find(S)==used.end())
            if(check_element(S))
            {
                p[i]+=bitmask;
                s[i] = '1';
                //used.insert(S);
            }
            Reverse(S,i);
        }
        bitmask>>=1;
    }
    /*fill(s.begin(),s.end(),'1');
    for(int i=0;i<n;i++)
    {
        Reverse(s,i);
        if(check_element(s))
        {
            p[i]=2;
            break;
        }
        Reverse(s,i);
    }
    
    int exist[n];
    memset(exist,0,sizeof exist);
    for(int i=0;i<n;i++)
        exist[p[i]] = 1;
    for(int i=0;i<n;i++)
        if(exist[i]==0)
    {
        p[0]=i;
        break;
    }*/
    #ifdef debug
    for(int x:p)
        cout<<x<<" ";
    #endif
    return p;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB n = 8
2 Correct 2 ms 256 KB n = 8
3 Correct 2 ms 384 KB n = 8
4 Correct 2 ms 256 KB n = 8
5 Correct 2 ms 256 KB n = 8
6 Correct 2 ms 256 KB n = 8
7 Correct 2 ms 256 KB n = 8
8 Correct 2 ms 384 KB n = 8
9 Correct 2 ms 384 KB n = 8
10 Correct 2 ms 384 KB n = 8
11 Correct 3 ms 256 KB n = 8
12 Correct 6 ms 384 KB n = 8
13 Correct 2 ms 256 KB n = 8
14 Correct 2 ms 256 KB n = 8
15 Correct 2 ms 256 KB n = 8
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB n = 32
2 Correct 2 ms 384 KB n = 32
3 Correct 2 ms 384 KB n = 32
4 Correct 2 ms 256 KB n = 32
5 Correct 2 ms 256 KB n = 32
6 Correct 2 ms 384 KB n = 32
7 Correct 2 ms 384 KB n = 32
8 Correct 2 ms 384 KB n = 32
9 Correct 2 ms 384 KB n = 32
10 Correct 2 ms 384 KB n = 32
11 Correct 2 ms 384 KB n = 32
12 Correct 2 ms 384 KB n = 32
13 Correct 2 ms 384 KB n = 32
14 Correct 2 ms 384 KB n = 32
15 Correct 2 ms 384 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB n = 32
2 Correct 2 ms 384 KB n = 32
3 Correct 2 ms 384 KB n = 32
4 Correct 2 ms 384 KB n = 32
5 Correct 2 ms 384 KB n = 32
6 Correct 2 ms 256 KB n = 32
7 Correct 2 ms 384 KB n = 32
8 Correct 2 ms 384 KB n = 32
9 Correct 2 ms 384 KB n = 32
10 Correct 2 ms 384 KB n = 32
11 Correct 2 ms 384 KB n = 32
12 Correct 2 ms 384 KB n = 32
13 Correct 2 ms 384 KB n = 32
14 Correct 2 ms 384 KB n = 32
15 Correct 3 ms 384 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 3 ms 512 KB n = 128
2 Correct 3 ms 512 KB n = 128
3 Correct 3 ms 512 KB n = 128
4 Correct 3 ms 512 KB n = 128
5 Correct 3 ms 512 KB n = 128
6 Correct 3 ms 512 KB n = 128
7 Correct 3 ms 512 KB n = 128
8 Correct 3 ms 512 KB n = 128
9 Correct 3 ms 560 KB n = 128
10 Correct 3 ms 512 KB n = 128
11 Correct 3 ms 512 KB n = 128
12 Correct 4 ms 512 KB n = 128
13 Correct 3 ms 512 KB n = 128
14 Correct 3 ms 512 KB n = 128
15 Correct 3 ms 512 KB n = 128
# Verdict Execution time Memory Grader output
1 Correct 3 ms 512 KB n = 128
2 Correct 3 ms 512 KB n = 128
3 Correct 3 ms 512 KB n = 128
4 Correct 3 ms 512 KB n = 128
5 Correct 3 ms 512 KB n = 128
6 Correct 3 ms 512 KB n = 128
7 Correct 3 ms 512 KB n = 128
8 Correct 3 ms 512 KB n = 128
9 Correct 3 ms 512 KB n = 128
10 Correct 3 ms 512 KB n = 128
11 Correct 4 ms 512 KB n = 128
12 Correct 3 ms 512 KB n = 128
13 Correct 3 ms 512 KB n = 128
14 Correct 3 ms 512 KB n = 128
15 Correct 3 ms 512 KB n = 128