답안 #294544

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
294544 2020-09-09T04:17:22 Z nandonathaniel Broken Device (JOI17_broken_device) C++14
100 / 100
51 ms 3584 KB
#include "Annalib.h"
#include "bits/stdc++.h"
using namespace std;
int rusak[150],bits[65],ans[150];
 
// 100 -> "0"
// 001 -> "1"
// 110 -> "1"
// 010 -> "00"
// 011 -> "01"
// 101 -> "10"
// 111 -> "11"
 
void Anna( int N, long long X, int K, int P[] ){
	memset(rusak,0,sizeof(rusak));
	for(int i=0;i<K;i++)rusak[P[i]]=1;
	for(int i=0;i<63;i++){
		if(X & (1LL<<i))bits[i]=1;
		else bits[i]=0;
	}
	int j=0;
	for(int i=0;i<N;i+=3){
		int byk=rusak[i]+rusak[i+1]+rusak[i+2];
		if(byk>1){
			ans[i]=0;ans[i+1]=0;ans[i+2]=0;
			continue;
		}
		if(byk==0){
			if(bits[j]==0 && bits[j+1]==0){
				ans[i]=0;ans[i+1]=1;ans[i+2]=0;
			}
			else if(bits[j]==0 && bits[j+1]==1){
				ans[i]=0;ans[i+1]=1;ans[i+2]=1;
			}
			else if(bits[j]==1 && bits[j+1]==0){
				ans[i]=1;ans[i+1]=0;ans[i+2]=1;
			}
			else{
				ans[i]=1;ans[i+1]=1;ans[i+2]=1;
			}
			j+=2;
		}
		else{
			if(bits[j]==0){
				if(!rusak[i]){
					ans[i]=1;ans[i+1]=0;ans[i+2]=0;
					j++;
				}
				else{
					if(bits[j+1]==0){
						ans[i]=0;ans[i+1]=1;ans[i+2]=0;
					}
					else{
						ans[i]=0;ans[i+1]=1;ans[i+2]=1;
					}
					j+=2;
				}
			}
			else{
				if(!rusak[i+2]){
					ans[i]=0;ans[i+1]=0;ans[i+2]=1;
				}
				else{
					ans[i]=1;ans[i+1]=1;ans[i+2]=0;
				}
				j++;
			}
		}
	}
	for(int i=0;i<N;i++)Set(i,ans[i]);
}
#include "Brunolib.h"
#include "bits/stdc++.h"
using namespace std;
 
// 100 -> "0"
// 001 -> "1"
// 110 -> "1"
// 010 -> "00"
// 011 -> "01"
// 101 -> "10"
// 111 -> "11"
 
long long Bruno( int N, int A[] ){
	vector<int> bits;
	for(int i=0;i<N;i+=3){
		if(A[i]==1 && A[i+1]==0 && A[i+2]==0){
			bits.push_back(0);
		}
		else if(A[i]==0 && A[i+1]==0 && A[i+2]==1){
			bits.push_back(1);
		}
		else if(A[i]==1 && A[i+1]==1 && A[i+2]==0){
			bits.push_back(1);
		}
		else if(A[i]==0 && A[i+1]==1 && A[i+2]==0){
			bits.push_back(0);bits.push_back(0);
		}
		else if(A[i]==0 && A[i+1]==1 && A[i+2]==1){
			bits.push_back(0);bits.push_back(1);
		}
		else if(A[i]==1 && A[i+1]==0 && A[i+2]==1){
			bits.push_back(1);bits.push_back(0);
		}
		else if(A[i]==1 && A[i+1]==1 && A[i+2]==1){
			bits.push_back(1);bits.push_back(1);
		}
	}
	long long ans=0;
	for(int i=0;i<60;i++){
		if(bits[i])ans+=(1LL<<i);
	}
	return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 45 ms 3328 KB Output is correct - L* = 40
2 Correct 45 ms 3328 KB Output is correct - L* = 40
3 Correct 45 ms 3328 KB Output is correct - L* = 40
4 Correct 46 ms 3568 KB Output is correct - L* = 40
5 Correct 48 ms 3312 KB Output is correct - L* = 40
6 Correct 45 ms 3328 KB Output is correct - L* = 40
7 Correct 45 ms 3328 KB Output is correct - L* = 40
8 Correct 47 ms 3312 KB Output is correct - L* = 40
9 Correct 47 ms 3328 KB Output is correct - L* = 40
10 Correct 45 ms 3312 KB Output is correct - L* = 40
11 Correct 45 ms 3328 KB Output is correct - L* = 40
12 Correct 48 ms 3312 KB Output is correct - L* = 40
13 Correct 47 ms 3312 KB Output is correct - L* = 40
14 Correct 45 ms 3328 KB Output is correct - L* = 40
15 Correct 45 ms 3328 KB Output is correct - L* = 40
16 Correct 45 ms 3312 KB Output is correct - L* = 40
17 Correct 45 ms 3328 KB Output is correct - L* = 40
18 Correct 45 ms 3328 KB Output is correct - L* = 40
19 Correct 47 ms 3328 KB Output is correct - L* = 40
20 Correct 46 ms 3312 KB Output is correct - L* = 40
21 Correct 45 ms 3328 KB Output is correct - L* = 40
22 Correct 46 ms 3328 KB Output is correct - L* = 40
23 Correct 46 ms 3328 KB Output is correct - L* = 40
24 Correct 47 ms 3328 KB Output is correct - L* = 40
25 Correct 45 ms 3328 KB Output is correct - L* = 40
26 Correct 45 ms 3392 KB Output is correct - L* = 40
27 Correct 51 ms 3328 KB Output is correct - L* = 40
28 Correct 46 ms 3328 KB Output is correct - L* = 40
29 Correct 45 ms 3312 KB Output is correct - L* = 40
30 Correct 45 ms 3312 KB Output is correct - L* = 40
31 Correct 46 ms 3312 KB Output is correct - L* = 40
32 Correct 45 ms 3312 KB Output is correct - L* = 40
33 Correct 46 ms 3312 KB Output is correct - L* = 40
34 Correct 45 ms 3320 KB Output is correct - L* = 40
35 Correct 46 ms 3312 KB Output is correct - L* = 40
36 Correct 45 ms 3312 KB Output is correct - L* = 40
37 Correct 45 ms 3312 KB Output is correct - L* = 40
38 Correct 46 ms 3328 KB Output is correct - L* = 40
39 Correct 47 ms 3584 KB Output is correct - L* = 40
40 Correct 45 ms 3312 KB Output is correct - L* = 40