Submission #974023

#TimeUsernameProblemLanguageResultExecution timeMemory
974023canadavid1Swap (BOI16_swap)C++17
21 / 100
1052 ms592 KiB
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>



int main()
{
    std::cin.tie(0)->sync_with_stdio(false);
    int N;
    std::cin >> N;
    std::vector<int> v(N);
    for(auto& i : v) std::cin >> i;
    v.insert(v.begin(),0);
    std::vector<int> out(N+1,0);
    
    std::vector<int> ls = v;
    // for(auto& i : ls) std::cerr << i;
    // std::cerr << "\n";
    for(int B = 0; B < 1<<((N)/2); B++)
    {
        std::vector<int> curr = v;
        for(int i = 2; i <=N; i++)
        {
            bool s;
            if (i%2 == 1) s = curr[i/2] > curr[i];
            else s = (B>>(i/2-1))&1;
            if (s) std::swap(curr[i/2],curr[i]);
        }
        //if ((N&1)==0 && curr[N] > curr[N/2]) std::swap(curr[N],curr[N/2]);

        // for(auto& i : curr) std::cerr << i;
        // std::cerr << "\n";

        int i = 0;
        for(;i <= N && ls[i]==curr[i];i++);
        if (curr[i] < ls[i]) ls = curr;
    }
    

    
    
    ls.erase(ls.begin());
    for(auto i : ls) std::cout << i << " ";
    std::cout << "\n";
}
#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...