Submission #1237544

#TimeUsernameProblemLanguageResultExecution timeMemory
1237544moondarksideMachine (IOI24_machine)C++20
10 / 100
3 ms432 KiB
#include<bits/stdc++.h>
#include <iostream>
using namespace std;



std::vector<int> use_machine(std::vector<int> A);

std::vector<int> find_permutation(int N){
    if(N%2!=0){
        int j=0;
        vector<int> A;
        for(int i=0;i<N;i++){
            j=j^i;
            A.push_back(i);
        }
        vector<int> Sol = use_machine(A);
        for(int i=0;i<Sol.size();i++){
            j=j^Sol[i];
        }
        for(int i=0;i<Sol.size();i++){
            Sol[i]=Sol[i]^j;
        }
        return Sol;
    }
    
    vector<int> PosAppearo(10);
    for(int i=1;i<=N;i++){
        int t=i;
        int j=0;
        while(t>0){
            if(t%2==1){
                PosAppearo[j]+=1;
                
            }
            j++;
            t/=2;
        }
    }
    int mult=1;
    int num=0;
    for(int i=0;i<10;i++){
        if(PosAppearo[i]==N/2){
            num+=mult;
        }
        mult*=2;
    }
    
    vector<int> Send;
    for(int i=0;i<=N;i++){
        if(i!=num){
            Send.push_back(i);
        }
    }
    
    vector<int> Sol=use_machine(Send);
    
    PosAppearo=vector<int>(10);
    for(int i=0;i<N;i++){
        int t=Sol[i];
        int j=0;
        while(t>0){
            if(t%2==1){
                PosAppearo[j]+=1;
                
            }
            j++;
            t/=2;
        }
    }
    
    mult=1;
    int xored=0;
    for(int i=0;i<10;i++){
        if(PosAppearo[i]>N/2){
            xored+=mult;
        }
        mult*=2;;
    }
    
    for(int i=0;i<Sol.size();i++){
        int t=Sol[i] ^xored;
        if(t>num){
            t--;
        }
        Sol[i]=t;
    }
    return Sol;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...