# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1205303 | MuhammadSaram | Broken Device (JOI17_broken_device) | C++20 | 19 ms | 1344 KiB |
#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;
void Anna(int n, long long x, int k, int P[])
{
bool off[n]={};
for (int i=0;i<k;i++)
off[P[i]]=1;
int p=60;x<<=1;
for (int i=0;i<n;i+=3)
{
int cnt=(off[i]+off[i+1]+off[i+2]),ass;
if (cnt>=2 or !p)
Set(i,0),Set(i+1,0),Set(i+2,0);
else if(cnt==1)
{
int val=(x>>p)%2;p--;
val=val*2+(x>>p)%2,p--;
if (off[i])
{
if (val==1) ass=3;
else if(val>=2) ass=2,p++;
else ass=1,p++;
}
else if(off[i+1])
{
if (val==2) ass=4;
else if(val==3) ass=5;
else ass=1,p++;
}
else
{
if (val==2) ass=4;
else if(val==3) ass=2,p++;
else ass=6,p++;
}
Set(i,ass/4),Set(i+1,ass%4/2),Set(i+2,ass%2);
}
else
{
int val=(x>>p)%2;p--;
if (p>=0) val=val*2+(x>>p)%2,p--;
if (val==0) ass=7;
else if(val==1) ass=3;
else if(val==2) ass=4;
else ass=5;
Set(i,ass/4),Set(i+1,ass%4/2),Set(i+2,ass%2);
}
}
}
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;
long long Bruno(int n, int a[])
{
long long ans=0;
int cnt=0;
vector<pair<int,int>> v={{1,0},{2,0},{2,1},{4,1},{4,2},{4,3},{2,0},{4,0}};
for (int i=0;i<n;i+=3)
{
int val=a[i]*4+a[i+1]*2+a[i+2];
ans=ans*v[val].first+v[val].second;
cnt+=31-__builtin_clz(v[val].first);
}
if (cnt>60) ans>>=2;
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |