Submission #1155088

#TimeUsernameProblemLanguageResultExecution timeMemory
1155088jerzykBroken Device (JOI17_broken_device)C++20
0 / 100
17 ms1556 KiB
#include "Annalib.h"
#include <bits/stdc++.h>

using namespace std;
#define pb push_back
#define st first
#define nd second
typedef long long ll;
typedef long double ld;
const ll I = 1000'000'000'000'000'000LL;
const int II = 2'000'000'000;
const ll M = 1000'000'007LL;
const int N = 200;
const int K = 10;
bool czy[N];
int ans[N];

void Anna(int _N, long long _X, int _K, int P[])
{
    int n = _N, k = _K; ll x = _X;
    for(int i = 1; i <= n; ++i)
    {
        ans[i] = 0;
        czy[i] = 0;
    }
    for(int i = 0; i < k; ++i)
        czy[P[i] + 1] = 1;
    vector<int> t;
    int il1 = 0;
    for(int i = 0; i < K; ++i)
    {
        int a = (bool)((1LL<<(ll)i) & x);
        il1 += a;
        t.pb(a);
    }
    if(il1 >= K / 2) t.pb(0);
    else t.pb(1);
    for(int i = 0; i < K; ++i)
        t[i] ^= t.back();
    /*cerr << "A: \n";
    for(int i = 0; i < (int)t.size(); ++i)
        cerr << t[i] << " ";
    cerr << "\n";*/
    int i = 1;
    for(int j = 0; j < (int)t.size(); ++j)
    {
        if(t[j] == 1 && !czy[i])
        {
            ans[i] = 1; ++i;
            continue;
        }
        if(t[j] == 1)
            ++i;
        while(czy[i + 1])
            i += 2;
        ++i;
        ans[i] = 1;
        ++i;
    }
    ans[i] = 1;
    for(int j = 1; j <= n; ++j)
    {
        Set(j - 1, ans[j]);
    }
}
#include "Brunolib.h"
#include <bits/stdc++.h>

using namespace std;
#define pb push_back
#define st first
#define nd second
typedef long long ll;
typedef long double ld;
const ll I = 1000'000'000'000'000'000LL;
const int II = 2'000'000'000;
const ll M = 1000'000'007LL;
const int N = 1000'007;
const int K = 10;

long long Bruno( int _N, int A[])
{
    int n = _N, il = 0; ll ans = 0LL;
    vector<int> cur;
    for(int i = 0; i < n && (int)cur.size() <= K; ++i)
    {
        if(A[i] == 1)
        {cur.pb(1); continue;}
        ++il;
        if(A[i + 1] == 1)
        {
            if(il % 2 == 1) cur.pb(0);
            else cur.pb(1);
            il = 0;
            ++i;
        }
    }
    /*cerr << "B: \n";
    for(int i = 0; i < (int)cur.size(); ++i)
        cerr << cur[i] << " ";
    cerr << "\n";*/
    for(int i = 0; i < K; ++i)
    {
        cur[i] ^= cur.back();
        ans += (1LL<<(ll)i) * (ll)cur[i];
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...