Submission #71518

#TimeUsernameProblemLanguageResultExecution timeMemory
71518FLDutchmanParrots (IOI11_parrots)C++14
81 / 100
2074 ms2592 KiB
#include "encoder.h" #include "encoderlib.h" #include <bits/stdc++.h> using namespace std; typedef int INT; #define FOR(i,l,r) for(int i = (l); i < (r); i++) #define snd second #define fst first #define V vector #define pb push_back typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int, int> ii; typedef vector<ii> vii; void encode(int N, int M[]){ if(N < 16) FOR(i, 0, N) FOR(j, 0, 8) {if(M[i]&(1<<j)) send( (i<<3)+j);} else { vi bestcode; int bestcnt = 1e9; FOR(s1, 0, 256) FOR(s2, s1+1, 256) FOR(s3, s2+1, 256) { srand(s1 * 256*256 + s2 * 256 + s3); int cnt = 0; vi code(256, 0); FOR(i, 0, N) { int r = (rand() % 256); FOR(j, 0, 4){ int m = M[i] ^ r; int k = (m>>(2*j))& 3 ; //cerr << cnt << endl; code[( (i<<2)+j)] += k; cnt += k; } } code[s1] += 4; code[s2] += 4; code[s3] += 4; cnt += 12; if(cnt <= 5*N) { //cout << s1 * 256*256 + s2 * 256 + s3 << endl; bestcnt = cnt; bestcode = code; goto end; } } end: //cout<<bestcnt<<endl; //for(int k : bestcode) cout << k << " "; //cout<<endl; FOR(i, 0, 256)FOR(j, 0, bestcode[i]) send(i); } }
#include "decoder.h" #include "decoderlib.h" #include <bits/stdc++.h> using namespace std; typedef int INT; #define FOR(i,l,r) for(int i = (l); i < (r); i++) #define snd second #define fst first #define V vector #define pb push_back typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int, int> ii; typedef vector<ii> vii; void decode(int N, int L, int X[]) { if(N < 16){ vi msg(N, 0) ; FOR(i, 0, L) msg[ (X[i]) >>3] |= 1<<(X[i]&7); FOR(i, 0, N) output(msg[i]); } else { //cerr << "{ "; //FOR(i, 0, 64) cerr << rand() % 256 << ", "; //cerr << "}"<<endl; vi msg(256, 0); FOR(i, 0, L) msg[X[i]]++; int seed = 0; FOR(i, 0, 256) if(msg[i]&4) {seed *= 256; seed += i;} //cout <<seed<<endl; srand(seed); FOR(i, 0, N) { int c = 0; FOR(k, 0, 4) c |= (msg[4*i+k] & 3) << (2*k); c ^= (rand() % 256); //cerr<<c<<endl; output(c); } } }

Compilation message (stderr)

encoder.cpp: In function 'void encode(int, int*)':
encoder.cpp:24:7: warning: variable 'bestcnt' set but not used [-Wunused-but-set-variable]
   int bestcnt = 1e9;
       ^~~~~~~
#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...