Submission #71513

#TimeUsernameProblemLanguageResultExecution timeMemory
71513FLDutchmanParrots (IOI11_parrots)C++14
96 / 100
68 ms2528 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(seed, 0, 256){ srand(seed); int cnt = 0; vi code(256, 0); int r = rand() % 256; FOR(i, 0, 8) { int t = (( (r^M[0])>>i)&1) << 2; code[i+1] += t; cnt += t; } FOR(i, 1, 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[0] = seed; cnt += seed; if(cnt < bestcnt) { bestcnt = cnt; bestcode = code; } } //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]]++; srand(msg[0]); int c = 0; FOR(i, 1, 9) { c |= ((msg[i] & 4) >> 2) << (i-1); } c ^= (rand() % 256); output(c ); //cerr << c << endl; FOR(i, 1, N) { int c = 0; FOR(k, 0, 4) c |= (msg[4*i+k] & 3) << (2*k); c ^= (rand() % 256); //cerr<<c<<endl; output(c); } } }
#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...