Submission #960249

#TimeUsernameProblemLanguageResultExecution timeMemory
960249GrindMachineParrots (IOI11_parrots)C++17
98 / 100
7 ms1552 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; template<typename T> using Tree = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; typedef long long int ll; typedef long double ld; typedef pair<int,int> pii; typedef pair<ll,ll> pll; #define fastio ios_base::sync_with_stdio(false); cin.tie(NULL) #define pb push_back #define endl '\n' #define sz(a) (int)a.size() #define setbits(x) __builtin_popcountll(x) #define ff first #define ss second #define conts continue #define ceil2(x,y) ((x+y-1)/(y)) #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() #define yes cout << "Yes" << endl #define no cout << "No" << endl #define rep(i,n) for(int i = 0; i < n; ++i) #define rep1(i,n) for(int i = 1; i <= n; ++i) #define rev(i,s,e) for(int i = s; i >= e; --i) #define trav(i,a) for(auto &i : a) template<typename T> void amin(T &a, T b) { a = min(a,b); } template<typename T> void amax(T &a, T b) { a = max(a,b); } #ifdef LOCAL #include "debug.h" #else #define debug(x) 42 #endif /* refs: edi */ const int MOD = 1e9 + 7; const int N = 1e5 + 5; const int inf1 = int(1e9) + 5; const ll inf2 = ll(1e18) + 5; #include "encoder.h" #include "encoderlib.h" void encode(int n, int a[]) { int cost1 = 0, cost2 = 0; rep(i,n){ int x = a[i]; rep(bit,4){ int f1 = 1<<bit, f2 = 1<<(bit+4); int b1 = 0, b2 = 0; if(x&f1) b1 = 1; if(x&f2) b2 = 1; int times = b1|(b2<<1); cost1 += times; cost2 += times^3; } } bool flip = false; if(cost2 < cost1) flip = true; if(flip){ rep(i,4){ send(0); } } int ptr = 0; rep(i,n){ int x = a[i]; rep(bit,4){ int f1 = 1<<bit, f2 = 1<<(bit+4); int b1 = 0, b2 = 0; if(x&f1) b1 = 1; if(x&f2) b2 = 1; int times = b1|(b2<<1); if(flip) times ^= 3; int val = i*4+bit; rep(j,times){ send(val); } } } }
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; template<typename T> using Tree = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; typedef long long int ll; typedef long double ld; typedef pair<int,int> pii; typedef pair<ll,ll> pll; #define fastio ios_base::sync_with_stdio(false); cin.tie(NULL) #define pb push_back #define endl '\n' #define sz(a) (int)a.size() #define setbits(x) __builtin_popcountll(x) #define ff first #define ss second #define conts continue #define ceil2(x,y) ((x+y-1)/(y)) #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() #define yes cout << "Yes" << endl #define no cout << "No" << endl #define rep(i,n) for(int i = 0; i < n; ++i) #define rep1(i,n) for(int i = 1; i <= n; ++i) #define rev(i,s,e) for(int i = s; i >= e; --i) #define trav(i,a) for(auto &i : a) template<typename T> void amin(T &a, T b) { a = min(a,b); } template<typename T> void amax(T &a, T b) { a = max(a,b); } #ifdef LOCAL #include "debug.h" #else #define debug(x) 42 #endif /* */ const int MOD = 1e9 + 7; const int N = 1e5 + 5; const int inf1 = int(1e9) + 5; const ll inf2 = ll(1e18) + 5; #include "decoder.h" #include "decoderlib.h" void decode(int n, int m, int X[]) { vector<int> cnt(4*n); rep(i,m) cnt[X[i]]++; bool flip = false; if(cnt[0] >= 4){ flip = true; cnt[0] -= 4; } vector<int> a(n); rep(i,4*n){ int c = cnt[i]; if(!c) conts; int ind = i/4, bit = i%4; int f1 = 1<<bit, f2 = 1<<(bit+4); if(c&1){ a[ind] |= f1; } if(c&2){ a[ind] |= f2; } } if(flip){ rep(i,n) a[i] ^= 255; } rep(i,n){ output(a[i]); } }

Compilation message (stderr)

encoder.cpp: In function 'void encode(int, int*)':
encoder.cpp:90:9: warning: unused variable 'ptr' [-Wunused-variable]
   90 |     int ptr = 0;
      |         ^~~
#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...