# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1219815 | Nika533 | Broken Device (JOI17_broken_device) | C++20 | 31 ms | 1608 KiB |
#pragma GCC diagnostic warning "-std=c++11"
#include <bits/stdc++.h>
#include "Annalib.h"
#define pb push_back
#define f first
#define s second
#define MOD 1000000007
#define flush fflush(stdout)
#define all(x) (x).begin(),(x).end()
#define allr(x) (x).rbegin(), (x).rend()
#define pii pair<int,int>
using namespace std;
void Anna( int N, long long X, int K, int P[]){
map<int,int> mymap;
for (int i=0; i<K; i++) mymap[P[i]]=1;
vector<int> v;
long long x=X;
while (x) {
v.pb(x%2); x/=2;
}
int sz=v.size();
v.pb(0); v.pb(0);
int ind=0;
for (int i=0; i<N; i+=3) {
if (ind>=sz || mymap[i]+mymap[i+1]+mymap[i+2]>1) {
Set(i,0); Set(i+1,0); Set(i+2,0);
}
else {
if (mymap[i]+mymap[i+1]+mymap[i+2]==0) {
if (v[ind]==0 && v[ind+1]==0) {
Set(i,0); Set(i+1,1); Set(i+2,0);
}
else if (v[ind]==0 && v[ind+1]==1) {
Set(i,0); Set(i+1,1); Set(i+2,1);
}
else if (v[ind]==1 && v[ind+1]==0) {
Set(i,1); Set(i+1,0); Set(i+2,1);
}
else if (v[ind]==1 && v[ind+1]==1) {
Set(i,1); Set(i+1,1); Set(i+2,1);
}
ind+=2;
}
else {
if (mymap[i]==1) {
if (v[ind]==0) {
if (v[ind+1]==0) {
Set(i,0); Set(i+1,1); Set(i+2,0);
}
else if (v[ind+1]==1) {
Set(i,0); Set(i+1,1); Set(i+2,1);
}
ind+=2;
}
else if (v[ind]==1) {
Set(i,0); Set(i+1,0); Set(i+2,1);
ind++;
}
}
else if (mymap[i+1]==1) {
if (v[ind]==0) {
Set(i,1); Set(i+1,0); Set(i+2,0);
}
else if (v[ind]==1) {
Set(i,0); Set(i+1,0); Set(i+2,1);
}
ind++;
}
else if (mymap[i+2]==1) {
if (v[ind]==0) {
Set(i,1); Set(i+1,0); Set(i+2,0);
}
else if (v[ind]==1) {
Set(i,1); Set(i+1,1); Set(i+2,0);
}
ind++;
}
}
}
}
}
#pragma GCC diagnostic warning "-std=c++11"
#include <bits/stdc++.h>
#include "Brunolib.h"
#define pb push_back
#define f first
#define s second
#define MOD 1000000007
#define flush fflush(stdout)
#define all(x) (x).begin(),(x).end()
#define allr(x) (x).rbegin(), (x).rend()
#define pii pair<int,int>
using namespace std;
long long Bruno( int N, int A[] ){
vector<int> v;
for (int i=0; i<N; i+=3) {
if (A[i]==0 && A[i+1]==0 && A[i+2]==0) {
continue;
}
if (A[i]==0 && A[i+1]==0 && A[i+2]==1) {
v.pb(1);
}
if (A[i]==1 && A[i+1]==0 && A[i+2]==0) {
v.pb(0);
}
if (A[i]==1 && A[i+1]==1 && A[i+2]==0) {
v.pb(1);
}
if (A[i]==0 && A[i+1]==1 && A[i+2]==0) {
v.pb(0); v.pb(0);
}
if (A[i]==0 && A[i+1]==1 && A[i+2]==1) {
v.pb(0); v.pb(1);
}
if (A[i]==1 && A[i+1]==0 && A[i+2]==1) {
v.pb(1); v.pb(0);
}
if (A[i]==1 && A[i+1]==1 && A[i+2]==1) {
v.pb(1); v.pb(1);
}
}
int sz=v.size();
long long x=0;
for (int i=sz-1; i>=0; i--) {
x*=2; x+=v[i];
}
return x;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |