Submission #125740

#TimeUsernameProblemLanguageResultExecution timeMemory
125740Nodir_BobievUnscrambling a Messy Bug (IOI16_messy)C++14
Compilation error
0 ms0 KiB
# include <iostream>
# include <vector>
# include <algorithm>

using namespace std;
# include <iostream>
# include <vector>
# include <algorithm>
# include "messy.h"

using namespace std;

vector < string > vc;
vector < int > tri[128][130], p = {0,3,5,1,2,7,4,6};
string zeros, ones;
/*
void add_element( string s )
{
    string nw;
    for( auto c: p ){
        nw += s[c];
    }
    vc.push_back( nw );
}

void print_elements()
{
    for( auto c: vc ){
        cout << c << endl;
    }
}

bool check_element( string s )
{
    for( auto c: vc ){
        if( c == s ){
            return true;
        }
    }
    return false;
}
*/
void rec( int i, int j )
{
    if( j == 1 )
        return;
    string ss = ones;
    for( auto c: tri[i][j] )ss[c] = '0';

    for( auto c: tri[i][j] ){
        string s = ss;
        s[c] = '1';
        if( check_element( s ) ){
            tri[i][j/2].push_back( c );
        }else{
            tri[i+j/2][j/2].push_back( c );
        }
    }
    rec(   i,   j/2 );
    rec( i+j/2, j/2);
}

vector <int> restor_permutation( int n, int w, int r )
{
    for( int i = 0; i < n; i ++ ){
        zeros += '0';
        ones += '1';
    }

    for( int i = 2; i <= n; i *= 2 ){
        for( int j = 0; j < n; j += i ){
            string s = zeros;
            for( int k = 0; k < j; k ++ ) s[k] = '1';
            for( int k=j+i; k < n; k ++ ) s[k] = '1';
            for( int k = j; k<j+i/2; k ++ ){
                s[k] = '1';
                add_element( s );
                s[k] = '0';
            }
        }
    }
    for( int i = 0; i < n; i ++ )
        tri[0][n].push_back( i );

    rec( 0, n );
    vector < pair < int, int > > st;
    for( int i = 0; i < n; i ++ ){
        st.push_back( make_pair( tri[i][1][0], i ) );
    }
    sort( st.begin(), st.end() );

    vector < int > ret;
    for( auto c: st ){
        ret.push_back( c.second );
    }
    return ret;
}
/*
int main()
{
    vector < int > ans;
    ans = restor_permutation( 8,8,8 );
    for( auto c: ans ){
        cout << c << ' ';
    }
    return 0;
}
*/

vector < string > vc;
vector < int > tri[128][130], p = {0,3,5,1,2,7,4,6};
string zeros, ones;
/*
void add_element( string s )
{
    string nw;
    for( auto c: p ){
        nw += s[c];
    }
    vc.push_back( nw );
}

void print_elements()
{
    for( auto c: vc ){
        cout << c << endl;
    }
}

bool check_element( string s )
{
    for( auto c: vc ){
        if( c == s ){
            return true;
        }
    }
    return false;
}
*/
void rec( int i, int j )
{
    if( j == 1 )
        return;
    string ss = ones;
    for( auto c: tri[i][j] )ss[c] = '0';

    for( auto c: tri[i][j] ){
        string s = ss;
        s[c] = '1';
        if( check_element( s ) ){
            tri[i][j/2].push_back( c );
        }else{
            tri[i+j/2][j/2].push_back( c );
        }
    }
    rec(   i,   j/2 );
    rec( i+j/2, j/2);
}

vector <int> restor_permutation( int n, int w, int r )
{
    for( int i = 0; i < n; i ++ ){
        zeros += '0';
        ones += '1';
    }

    for( int i = 2; i <= n; i *= 2 ){
        for( int j = 0; j < n; j += i ){
            string s = zeros;
            for( int k = 0; k < j; k ++ ) s[k] = '1';
            for( int k=j+i; k < n; k ++ ) s[k] = '1';
            for( int k = j; k<j+i/2; k ++ ){
                s[k] = '1';
                add_element( s );
                s[k] = '0';
            }
        }
    }
    for( int i = 0; i < n; i ++ )
        tri[0][n].push_back( i );

    rec( 0, n );
    vector < pair < int, int > > st;
    for( int i = 0; i < n; i ++ ){
        st.push_back( make_pair( tri[i][1][0], i ) );
    }
    sort( st.begin(), st.end() );

    vector < int > ret;
    for( auto c: st ){
        ret.push_back( c.second );
    }
    return ret;
}
/*
int main()
{
    vector < int > ans;
    ans = restor_permutation( 8,8,8 );
    for( auto c: ans ){
        cout << c << ' ';
    }
    return 0;
}
*/

Compilation message (stderr)

messy.cpp:110:19: error: redefinition of 'std::vector<std::__cxx11::basic_string<char> > vc'
 vector < string > vc;
                   ^~
messy.cpp:13:19: note: 'std::vector<std::__cxx11::basic_string<char> > vc' previously declared here
 vector < string > vc;
                   ^~
messy.cpp:111:28: error: redefinition of 'std::vector<int> tri [128][130]'
 vector < int > tri[128][130], p = {0,3,5,1,2,7,4,6};
                            ^
messy.cpp:14:16: note: 'std::vector<int> tri [128][130]' previously declared here
 vector < int > tri[128][130], p = {0,3,5,1,2,7,4,6};
                ^~~
messy.cpp:111:31: error: redefinition of 'std::vector<int> p'
 vector < int > tri[128][130], p = {0,3,5,1,2,7,4,6};
                               ^
messy.cpp:14:31: note: 'std::vector<int> p' previously declared here
 vector < int > tri[128][130], p = {0,3,5,1,2,7,4,6};
                               ^
messy.cpp:112:8: error: redefinition of 'std::__cxx11::string zeros'
 string zeros, ones;
        ^~~~~
messy.cpp:15:8: note: 'std::__cxx11::string zeros' previously declared here
 string zeros, ones;
        ^~~~~
messy.cpp:112:15: error: redefinition of 'std::__cxx11::string ones'
 string zeros, ones;
               ^~~~
messy.cpp:15:15: note: 'std::__cxx11::string ones' previously declared here
 string zeros, ones;
               ^~~~
messy.cpp: In function 'void rec(int, int)':
messy.cpp:140:6: error: redefinition of 'void rec(int, int)'
 void rec( int i, int j )
      ^~~
messy.cpp:43:6: note: 'void rec(int, int)' previously defined here
 void rec( int i, int j )
      ^~~
messy.cpp: In function 'std::vector<int> restor_permutation(int, int, int)':
messy.cpp:160:14: error: redefinition of 'std::vector<int> restor_permutation(int, int, int)'
 vector <int> restor_permutation( int n, int w, int r )
              ^~~~~~~~~~~~~~~~~~
messy.cpp:63:14: note: 'std::vector<int> restor_permutation(int, int, int)' previously defined here
 vector <int> restor_permutation( int n, int w, int r )
              ^~~~~~~~~~~~~~~~~~