# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
204104 | coldEr66 | Broken Device (JOI17_broken_device) | C++14 | 55 ms | 3312 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "Annalib.h"
const int MAXn = 173;
int ok[MAXn],d[MAXn];
void Anna( int N, long long X, int K, int P[] ){
for (int i=0;i<N;i++) {
ok[i] = d[i] = 0;
}
for (int i=0;i<K;i++) {
ok[P[i]] = 1;
}
for (int i=0;i<N;i+=3) {
int tmp = ok[i] + ok[i+1] + ok[i+2];
if (tmp >= 2) continue;
if (tmp == 1) {
if (X % 2 == 0) {
if (ok[i+2]) d[i] = d[i+1] = 1;
else d[i+2] = 1;
}
else {
if (ok[i]) {
if (X % 4 == 1) d[i+1] = 1;
else d[i+1] = d[i+2] = 1;
X >>= 1;
}
else d[i] = 1;
}
X >>= 1;
}
else {
if (X % 4 == 0) d[i] = d[i+1] = d[i+2] = 1;
else if (X % 4 == 1) d[i+1] = 1;
else if (X % 4 == 2) d[i] = d[i+2] = 1;
else d[i+1] = d[i+2] = 1;
X >>= 2;
}
}
for (int i=0;i<N;i++) {
Set(i, d[i]);
}
}
#include "Brunolib.h"
#include <algorithm>
#include <iostream>
using namespace std;
typedef pair<int,int> ii;
#define X first
#define Y second
ii gt(int a,int b,int c){
int ret = 4*a + 2*b + c;
if (ret == 0) return ii(1,0);
if (ret == 1) return ii(2,0);
if (ret == 2) return ii(4,1);
if (ret == 3) return ii(4,3);
if (ret == 4) return ii(2,1);
if (ret == 5) return ii(4,2);
if (ret == 6) return ii(2,0);
if (ret == 7) return ii(4,0);
return ii(0,0);
}
long long Bruno( int N, int A[] ){
long long ret = 0;
for (int i=N-3;i>=0;i-=3) {
ii tmp = gt(A[i],A[i+1],A[i+2]);
ret = ret * tmp.X + tmp.Y;
}
return ret;
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |