# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
990666 | efishel | Broken Device (JOI17_broken_device) | C++17 | 36 ms | 2748 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vll = vector <ll>;
static mt19937_64 rngA(0xccff00);
void Anna (int n, ll x, int k, int p[]) {
vll to(n);
iota(to.begin(), to.end(), 0);
shuffle(to.begin(), to.end(), rngA);
vector <char> broken(n, false);
for (ll i : vll(p, p+k)) broken[to[i]] = true;
vll th(38, -15);
for (ll i = 0; i < 38; i++) {
th[i] = x%3;
x /= 3;
}
// 00 none
// 01 0
// 10 1
// 11 2
ll at = 0;
ll i = 0;
vll set(n, 0);
for (; i < n; i += 2) {
if (at == 38) break;
switch (th[at]) {
case 0:
if (broken[i+1]) break;
set[i] = 0;
set[i+1] = 1;
at++;
break;
case 1:
if (broken[i]) break;
set[i] = 1;
set[i+1] = 0;
at++;
break;
case 2:
if (broken[i] || broken[i+1]) break;
set[i] = 1;
set[i+1] = 1;
at++;
break;
default:
assert(false);
}
}
for (ll i = 0; i < n; i++) {
Set(i, set[to[i]]);
}
}
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vll = vector <ll>;
static mt19937_64 rngB(0xccff00);
ll Bruno (int n, int a[]) {
vll orig(a, a+n);
vll to(n);
iota(to.begin(), to.end(), 0);
shuffle(to.begin(), to.end(), rngB);
vll ve(n);
for (ll i = 0; i < n; i++) ve[to[i]] = orig[i];
vll th(38);
ll at = 0;
for (ll i = 0; i < n; i += 2) {
if (at == 38) break;
if (ve[i] == 0 && ve[i+1] == 0) continue;
th[at++] = (
ve[i] == 0 && ve[i+1] == 1 ? 0 :
ve[i] == 1 && ve[i+1] == 0 ? 1 :
ve[i] == 1 && ve[i+1] == 1 ? 2 : -15
);
}
ll ans = 0;
ll thr = 1;
for (ll i = 0; i < 38; i++) {
ans += th[i]*thr;
thr *= 3;
}
cerr << ans << " ans\n";
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |