Submission #565323

#TimeUsernameProblemLanguageResultExecution timeMemory
565323SortingBroken Device 2 (JOI22_device2)C++17
80 / 100
119 ms3548 KiB
#include "Anna.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; static const int BITS = 60; static const int C = 3; static const int LEN = 178; static mt19937 mt(1432); int Declare() { return LEN; } static vector<int> gen_seq(){ vector<int> v(BITS); for(int i = 0; i < BITS; ++i) v[i] = uniform_int_distribution<int>(0, 1)(mt); return v; } pair<vector<int>, vector<int>> Anna(ll a) { vector<int> rand_seq = gen_seq(); vector<int> v1, v2; for(ll i = 0; i < LEN; i += 2){ v1.push_back(0); v1.push_back(1); } vector<int> seq; for(ll i = 0; i < BITS; ++i){ ll bit = (a >> i) & 1ll; seq.push_back(bit); } for(int i = 0; i < BITS; ++i) seq[i] ^= rand_seq[i]; ll cnt = 1; for(ll i = 1; i <= BITS; ++i){ if(i == BITS || seq[i] != seq[i - 1]){ for(ll j = 0; j < 2 * cnt + 1; ++j) v2.push_back(seq[i - 1]); cnt = 0; } ++cnt; } while(v2.size() < LEN) v2.push_back(0); assert((int)v2.size() == LEN); return {v1, v2}; }
#include "Bruno.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; static const int BITS = 60; static const int C = 3; static mt19937 mt(1432); static vector<int> gen_seq(){ vector<int> v(BITS); for(int i = 0; i < BITS; ++i) v[i] = uniform_int_distribution<int>(0, 1)(mt); return v; } ll Bruno(vector<int> u) { vector<int> rand_seq = gen_seq(); ll curr = 0, prefix = 0, dir = 0; vector<ll> bits; for(ll i = 0; i < u.size(); ++i){ prefix += u[i] ? 1 : -1; if(dir == -1 && prefix <= curr - (C - 1)){ bits.push_back(0); curr -= C - 1; continue; } if(dir == 1 && prefix >= curr + C - 2){ bits.push_back(1); curr += C - 1; continue; } if(prefix <= curr - C){ bits.push_back(0); curr -= C; dir = -1; } else if(prefix >= curr + C - 1){ bits.push_back(1); curr += C; dir = 1; } } ll ans = 0; assert(bits.size() >= BITS); bits.resize(BITS); for(int i = 0; i < BITS; ++i) bits[i] ^= rand_seq[i]; for(ll i = 0; i < bits.size(); ++i) ans += bits[i] << i; return ans; }

Compilation message (stderr)

Bruno.cpp: In function 'll Bruno(std::vector<int>)':
Bruno.cpp:26:21: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |     for(ll i = 0; i < u.size(); ++i){
      |                   ~~^~~~~~~~~~
Bruno.cpp:58:21: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   58 |     for(ll i = 0; i < bits.size(); ++i)
      |                   ~~^~~~~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...