제출 #1233379

#제출 시각아이디문제언어결과실행 시간메모리
1233379inesfiData Transfer (IOI19_transfer)C++20
80 / 100
79 ms1728 KiB
#include "transfer.h" #include<bits/stdc++.h> using namespace std; vector<int> binaire(int a,int cb){ vector<int> r={}; while (cb>0){ cb--; r.push_back(a%2); a/=2; } return r; } vector<int> get_attachment(vector<int> source) { int n=source.size(); int somme=0; for (int i=0;i<n;i++){ if (source[i]==1){ somme+=i+1; } } vector<int> rep=binaire(somme,(int)log2(n*n)); //cout<<(int)log2(n*n)<<endl; int parite=0; for (auto r:rep){ parite+=r; } parite%=2; rep.push_back(parite); /*for (auto i:rep){ cout<<i<<" "; } cout<<endl;*/ return rep; } vector<int> retrieve(vector<int> tab) { int n; if (tab.size()>250){ n=255; } else { n=63; } int parite=0; int somme=0; int puiss=1; for (int i=n;i<(int)tab.size()-1;i++){ parite+=tab[i]; somme+=tab[i]*puiss; puiss*=2; } vector<int> rep={}; for (int i=0;i<n;i++){ rep.push_back(tab[i]); } if (parite%2!=tab.back()){ return rep; } int nouv=0; for (int i=0;i<n;i++){ if (tab[i]==1){ nouv+=i+1; } } if (nouv==somme){ return rep; } if (nouv>somme){ rep[nouv-somme-1]=0; } else { rep[somme-nouv-1]=1; } /*for (int i=0;i<n;i++){ cout<<rep[i]<<" "; } cout<<endl;*/ return rep; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...