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...