Submission #67275

#TimeUsernameProblemLanguageResultExecution timeMemory
67275RezwanArefin01Parrots (IOI11_parrots)C++17
81 / 100
10 ms2528 KiB
#include "encoder.h" #include "encoderlib.h" #include <bits/stdc++.h> using namespace std; void encode(int N, int M[]) { if(N <= 32) { for(int i = 0; i < 8 * N; i++) { int c = (M[i / 8] >> (7 - i % 8)) & 1; if(c) send(i); } } else { vector<pair<int, int> > v; int one = 0, zero = 0; for(int i = 0; i < 4 * N; i++) { int c = M[i / 4] >> ((3 - (i % 4)) * 2) & 3; v.emplace_back(i, c); one += c; zero += 3 - c; } if(zero < one) { for(auto &x : v) x.second = 3 - x.second; send(255); send(255); send(255); } for(auto &x : v) while(x.second--) send(x.first); } }
#include "decoder.h" #include "decoderlib.h" #include <bits/stdc++.h> using namespace std; void decode(int N, int L, int X[]) { int a[N * 8]; memset(a, 0, sizeof a); if(N <= 32) { for(int i = 0; i < L; i++) a[X[i]] = 1; for(int i = 0; i < N; i++) { int num = 0; for(int j = i * 8; j < (i + 1) * 8; j++) num = num * 2 + a[j]; output(num); } } else { int zero = 0; if(a[255] > 3) { a[255] -= 3, zero = 1; } for(int i = 0; i < L; i++) a[X[i]]++; for(int i = 0; i < 4 * N && zero; i++) a[i] = 3 - a[i]; for(int i = 0; i < N; i++) { int num = 0; for(int j = i * 4; j < (i + 1) * 4; j++) num = num * 4 + a[j]; output(num); } } }
#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...