제출 #1029790

#제출 시각아이디문제언어결과실행 시간메모리
1029790borisAngelovBroken Device (JOI17_broken_device)C++17
0 / 100
28 ms3032 KiB
#include "Annalib.h"
#include <bits/stdc++.h>

using namespace std;

int n, k;
long long x;
bool isBlocked[200];

void Anna(int N, long long X, int K, int P[])
{
    n = N;
    x = X;
    k = K;

    for (int i = 0; i < k; ++i)
    {
        isBlocked[P[i]] = true;
    }

    long long bit = 0;

    for (int i = 0; i < n; ++i)
    {
        if (bit == 60)
        {
            Set(i, 0);
            continue;
        }

        if (i < n - 2 && isBlocked[i] == false && isBlocked[i + 1] == false)
        {
            if ((x & (1LL << bit)) != 0)
            {
                Set(i, 1);
            }
            else
            {
                Set(i, 0);
            }

            Set(i + 1, 1);
            ++i;
            ++bit;
        }
        else
        {
            Set(i, 0);
        }
    }
}
#include "Brunolib.h"
#include <bits/stdc++.h>

using namespace std;

int a[200];

long long Bruno(int N, int A[])
{
    int n = N;

    for (int i = 0; i < n; ++i)
    {
        a[i] = A[i];
    }

    /*for (int i = 0; i < n; ++i)
    {
        cout << a[i] << " ";
    }

    cout << endl;*/

    long long ans = 0;
    long long bit = 0;

    for (int i = 0; i < n; ++i)
    {
        if (a[i] == 1)
        {
            int cnt = 1, from = i;

            while (i + 1 < n && a[i + 1] == 1)
            {
                ++cnt;
                ++i;
            }

            if (cnt % 2 == 1)
            {
                ++from;
                ++bit;
            }

            for (int j = from; j <= i; j += 2)
            {
                ans += (1LL << bit);
                ++bit;
            }

            //cout << from << " " << i << " :: " << ans << endl;
        }
    }

    //cout << ans << endl;

    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...