| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1363404 | solution6312 | Broken Device (JOI17_broken_device) | C++17 | 14 ms | 1432 KiB |
#include "Annalib.h"
#include <iostream>
#include <cassert>
#include <chrono>
#include <random>
#include <algorithm>
using namespace std;
using ll=long long;
void Set(int pos, int bit);
namespace encode
{
int work[150], bit[61];
void Anna(int N, ll X, int K, int P[])
{
for (int i=0; i<150; i++) work[i]=1;
for (int i=0; i<K; i++) work[P[i]]=0;
for (int i=0; i<60; i++) bit[i]=((X>>i)&1);
bit[60]=0;
int cnt=0;
for (int i=0; i<150; i+=3)
{
int tot=work[i]+work[i+1]+work[i+2];
if (tot<=1 || cnt>=60)
{
Set(i, 0);
Set(i+1, 0);
Set(i+2, 0);
continue;
}
else if (tot==2)
{
if (bit[cnt])
{
if (work[i+2])
{
Set(i, 0);
Set(i+1, 0);
Set(i+2, 1);
}
else
{
Set(i, 1);
Set(i+1, 1);
Set(i+2, 0);
}
cnt++;
}
else if (work[i+1])
{
Set(i, 0);
Set(i+1, 1);
Set(i+2, 0);
cnt++;
}
else if (bit[cnt+1])
{
Set(i, 1);
Set(i+1, 0);
Set(i+2, 1);
cnt+=2;
}
else
{
Set(i, 1);
Set(i+1, 0);
Set(i+2, 0);
cnt+=2;
}
}
else
{
if (!bit[cnt] && !bit[cnt+1])
{
Set(i, 1);
Set(i+1, 0);
Set(i+2, 0);
}
else if (!bit[cnt] && bit[cnt+1])
{
Set(i, 1);
Set(i+1, 0);
Set(i+2, 1);
}
else if (bit[cnt] && !bit[cnt+1])
{
Set(i, 0);
Set(i+1, 1);
Set(i+2, 1);
}
else
{
Set(i, 1);
Set(i+1, 1);
Set(i+2, 1);
}
cnt+=2;
}
}
}
}
void Anna(int N, ll X, int K, int P[]) { encode::Anna(N, X, K, P); }#include "Brunolib.h"
#include <iostream>
#include <cassert>
#include <chrono>
#include <random>
#include <algorithm>
using namespace std;
using ll=long long;
namespace decode
{
int bit[61];
ll Bruno(int N, int A[])
{
int cnt=0;
for (int i=0; i<150; i+=3)
{
if (!A[i] && !A[i+1] && !A[i+2]) continue;
else if (!A[i] && !A[i+1] && A[i+2]) bit[cnt++]=1;
else if (!A[i] && A[i+1] && !A[i+2]) bit[cnt++]=0;
else if (!A[i] && A[i+1] && A[i+2])
{
bit[cnt++]=1;
bit[cnt++]=0;
}
else if (A[i] && !A[i+1] && !A[i+2])
{
bit[cnt++]=0;
bit[cnt++]=0;
}
else if (A[i] && !A[i+1] && A[i+2])
{
bit[cnt++]=0;
bit[cnt++]=1;
}
else if (A[i] && A[i+1] && !A[i+2]) bit[cnt++]=1;
else
{
bit[cnt++]=1;
bit[cnt++]=1;
}
}
ll ans=0;
for (int i=0; i<60; i++) if (bit[i]) ans^=(1ll<<i);
return ans;
}
}
ll Bruno(int N, int A[]) { return decode::Bruno(N, A); }| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
