| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1319738 | PlayVoltz | Broken Device (JOI17_broken_device) | C++20 | 20 ms | 1516 KiB |
#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define fi first
#define se second
void Anna(int n, long long x, int k, int p[]){
vector<bool> die(n, 0), res1(n, 0), res2(n, 0), res3(n, 0), res4(n, 0);
for (int i=0; i<k; ++i)die[p[i]]=1;
int first1=2, first2=2, first3=2, first4=2;
long long b1=0, b2=0, b3=0, b4=0;
for (int i=0; i<n/2&&b1<60; ++i){
if (die[i]&&die[i+n/2])continue;
if (first1){
if (!die[i])res1[i]=1, --first1;
continue;
}
if (!die[i]&&!die[i+n/2]){
if ((1ll<<b1)&x)res1[i]=1;
else res1[i+n/2]=1;
++b1;
}
else if (die[i]){
if (!((1ll<<b1)&x))res1[i+n/2]=1, ++b1;
}
else{
if ((1ll<<b1)&x)res1[i]=1, ++b1;
}
}
for (int i=0; i<n/2&&b2<60; ++i){
if (die[i]&&die[i+n/2])continue;
if (first2){
if (!die[i+n/2])res2[i+n/2]=1, --first2;
continue;
}
if (!die[i]&&!die[i+n/2]){
if ((1ll<<b2)&x)res2[i+n/2]=1;
else res2[i]=1;
++b2;
}
else if (die[i]){
if ((1ll<<b2)&x)res2[i+n/2]=1, ++b2;
}
else{
if (!((1ll<<b2)&x))res2[i]=1, ++b2;
}
}
for (int i=0; i<n/2&&b3<60; ++i){
if (die[i]&&die[i+n/2])continue;
if (first3){
if (first3==2){
if (!die[i])res3[i]=1, --first3;
}
else{
if (!die[i+n/2])res3[i+n/2]=1, --first3;
}
continue;
}
if (b3%2){
if (!die[i]&&!die[i+n/2]){
if ((1ll<<b3)&x)res3[i]=1;
else res3[i+n/2]=1;
++b3;
}
else if (die[i]){
if (!((1ll<<b3)&x))res3[i+n/2]=1, ++b3;
}
else{
if ((1ll<<b3)&x)res3[i]=1, ++b3;
}
}
else{
if (!die[i]&&!die[i+n/2]){
if (!((1ll<<b3)&x))res3[i]=1;
else res3[i+n/2]=1;
++b3;
}
else if (die[i]){
if ((1ll<<b3)&x)res3[i+n/2]=1, ++b3;
}
else{
if (!((1ll<<b3)&x))res3[i]=1, ++b3;
}
}
}
for (int i=0; i<n/2&&b4<60; ++i){
if (die[i]&&die[i+n/2])continue;
if (first4){
if (first4==2){
if (!die[i+n/2])res4[i+n/2]=1, --first4;
}
else{
if (!die[i])res4[i]=1, --first4;
}
continue;
}
if (b4%2){
if (!die[i]&&!die[i+n/2]){
if (!((1ll<<b4)&x))res4[i]=1;
else res4[i+n/2]=1;
++b4;
}
else if (die[i]){
if ((1ll<<b4)&x)res4[i+n/2]=1, ++b4;
}
else{
if (!((1ll<<b4)&x))res4[i]=1, ++b4;
}
}
else{
if (!die[i]&&!die[i+n/2]){
if ((1ll<<b4)&x)res4[i]=1;
else res4[i+n/2]=1;
++b4;
}
else if (die[i]){
if (!((1ll<<b4)&x))res4[i+n/2]=1, ++b4;
}
else{
if ((1ll<<b4)&x)res4[i]=1, ++b4;
}
}
}
if (b1==max({b1, b2, b3, b4}))for (int i=0; i<n; ++i)Set(i, res1[i]);
else if (b2==max({b1, b2, b3, b4}))for (int i=0; i<n; ++i)Set(i, res2[i]);
else if (b3==max({b1, b2, b3, b4}))for (int i=0; i<n; ++i)Set(i, res3[i]);
else for (int i=0; i<n; ++i)Set(i, res4[i]);
}
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define fi first
#define se second
long long Bruno(int n, int vect[]){
long long res=0, res2=0, b=0, res3=0, res4=0;
int first=2, one=0;
for (int i=0; i<n/2&&b<60; ++i){
if (first){
if (vect[i])one+=first, --first;
else if (vect[i+n/2])--first;
continue;
}
if (vect[i]){
res+=(1ll<<b);
if (b%2)res3+=(1ll<<b);
else res4+=(1ll<<b);
++b;
}
else if (vect[i+n/2]){
res2+=(1ll<<b);
if (b%2)res4+=(1ll<<b);
else res3+=(1ll<<b);
++b;
}
}
if (one==3)return res;
if (!one)return res2;
if (one==1)return res4;
return res3;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
