제출 #115893

#제출 시각아이디문제언어결과실행 시간메모리
115893aminraBroken Device (JOI17_broken_device)C++14
0 / 100
38 ms3072 KiB
#include <bits/stdc++.h>
#include "Annalib.h"
using namespace std;
typedef long long ll;
typedef long double ld;
const int MOD = (int)1e9 + 7;
const int MAXN = (int)153;
const int infint = (int)1e9 + 3;
const ll inf = (ll)1e18;
int ans[MAXN], bad[MAXN];
void build(int i, int b1, int b2, int b3)
{
	ans[i] = b1, ans[i + 1] = b2, ans[i + 2] = b3;
	return;
}
void Anna(int N, ll X, int k, int P[])
{
	memset(bad, 0, sizeof bad);
	memset(ans, 0, sizeof ans);
	
	
	for (int i = 0; i < k; i++)
		bad[P[i]] = 1;
	
	for (int i = 0; i < N; i += 3)
	{
		if(bad[i] + bad[i + 1] + bad[i + 2] > 1)
		{
			build(i, 0, 0, 0);
			continue;
		}
		if(bad[i] + bad[i + 1] + bad[i + 2] == 0)
		{
			if(X % 4 == 0)
				build(i, 1, 0, 0);
			if(X % 4 == 1)
				build(i, 0, 1, 1);
			if(X % 4 == 2)
				build(i, 1, 0, 1);
			if(X % 4 == 3)
				build(i, 1, 1, 1);
			X /= 4;
			continue;
		}
		if(bad[i + 1] == 0)
		{
			if(X % 2 == 0)
				build(i, 0, 1, 0);
			else
			if(bad[i + 2] == 0)
				build(i, 0, 0, 1);
			else
				build(i, 1, 1, 0);
			X /= 2;
			continue;
		}
		else
		{
			if(X % 2 == 0)
				build(i, 0, 0, 1), X /= 2;
			else
			if(X % 4 == 0)
				build(i, 1, 0, 0), X /= 4;
			else
				build(i, 1, 0, 1), X /= 4;
		}
	}
	for (int i = 0; i < N; i++)
		Set(i, ans[i]);
}
/*int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
}*/
#include "Brunolib.h"
#include <bits/stdc++.h>
#define ll long long
 
using namespace std;
 
long long Bruno( int N, int A[] ){
 
    ll ans = 0, pw = 1;
 
    for(int i = 0; i < N; i += 3) {
 
        int val = A[i] * 4 + A[i + 1] * 2 + A[i + 2];
 
        if(val == 0) {
            continue;
        }
 
        if(val == 2) {
            pw *= 2;
            continue;
        }
 
        if(val == 1 || val == 6) {
            ans += pw;
            pw *= 2;
            continue;
        }
 
        if(val == 3) {
            ans += pw;
        }
        if(val == 4) {
            ans += 0;
        }
        if(val == 5) {
            ans += pw * 2;
        }
        if(val == 7) {
            ans += 3 * pw;
        }
 
        pw *= 4;
 
    }
 
    return ans;
 
}
#Verdict Execution timeMemoryGrader output
Fetching results...