# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
896456 | 2024-01-01T13:35:43 Z | anton | 앵무새 (IOI11_parrots) | C++17 | 0 ms | 0 KB |
#include "encoder.h" #include "encoderlib.h" #include<bits/stdc++.h> using namespace std; void encode(int N, int M[]) { if(N<=32){ int id = 0; for(int i=0; i<N; i++){ for(int j = 0; j<8; j++){ if((M[i] & (1<<j))!=0){ send(id); } id++; } } } else{ int nb1 = 0; for(int i=0; i<N; i++){ for(int j = 0; j<8; j++){ if((M[i] & (1<<j))!=0){ nb1++; } } } //cout<<nb1<<endl; if(nb1<N*4){ //cout<<"no swap"<<endl; int id = 0; for(int i=0; i<N; i++){ for(int j = 0; j<8; j++){ if((M[i] & (1<<j))!=0){ send(id); } id++; } } } else{ vector<int>mes(N); for(int i = 0; i<N; i++){ mes[i] = M[i]^((1<<8)-1); } int id = 0; for(int i=0; i<N; i++){ for(int j = 0; j<8; j++){ if((mes[i] & (1<<j))!=0){ //cout<<id<<endl; send(id); } id++; } } send((N-1)*8 + 7); send((N-1)*8 + 7); } } }