Submission #1287236

#TimeUsernameProblemLanguageResultExecution timeMemory
1287236khoavn2008Broken Device (JOI17_broken_device)C++17
85 / 100
25 ms1580 KiB
#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld double
#define FOR(i,l,r) for(int i = (l), _r = (r); i <= _r; i++)
#define FORNG(i,r,l) for(int i = (r), _l = (l); i >= _l; i--)
#define REP(i,r) for(int i = 0, _r = (r); i < _r; i++)
#define endl '\n'
#define fi first
#define se second
#define pb push_back
#define all(v) (v).begin(),(v).end()
#define size(v) ((ll)(v).size())
#define MASK(x) (1LL << (x))
#define BIT(x, i) (((x) >> (i)) & 1)

//const ll MOD = 1e9 + 7, N = 1e5 + 10, INF = 1e9, LOG = 21;

//void Set(int p,int v){}
void Anna( int N, long long X, int K, int P[] ){
    mt19937 rd(2008);
    vector<bool> bit(N), bad(N);
    REP(i,K)bad[P[i]] = 1;
    vector<int> a;
    REP(i,38){
        a.pb(X % 3);
        X /= 3;
    }
    reverse(all(a));
    REP(i,size(a))a[i] = (a[i] + 1) % 3;
    int c = 0;
    for(int i = 0; i < N; i += 2){
        if(c == 38)break;
        int v = a[c] + 1;
        if(bad[i] && bad[i + 1])continue;
        else if(bad[i]){
            if(!BIT(v, 1)){
                bit[i] = 0,bit[i + 1] = BIT(v, 0);
                c++;
                continue;
            }
        }else if(bad[i + 1]){
            if(!BIT(v, 0)){
                bit[i] = BIT(v, 1),bit[i + 1] = 0;
                c++;
                continue;
            }
        }else{
            bit[i] = BIT(v, 1), bit[i + 1] = BIT(v, 0);
            c++;
        }
    }
//    REP(i,N)cout<<bit[i];
    REP(i,N)Set(i, bit[i]);
}
#ifdef KHOA
int main(){
    int N = 150;
    int K = 2;
    int X = 7;
    int P[] = {2, 3};
    Anna(N, X, K, P);
}
#endif // KHOA
#include "Brunolib.h"
#include <bits/stdc++.h>

using namespace std;
#define ll long long
#define ld double
#define FOR(i,l,r) for(int i = (l), _r = (r); i <= _r; i++)
#define FORNG(i,r,l) for(int i = (r), _l = (l); i >= _l; i--)
#define REP(i,r) for(int i = 0, _r = (r); i < _r; i++)
#define endl '\n'
#define fi first
#define se second
#define pb push_back
#define all(v) (v).begin(),(v).end()
#define size(v) ((ll)(v).size())
#define MASK(x) (1LL << (x))
#define BIT(x, i) (((x) >> (i)) & 1)

//const ll MOD = 1e9 + 7, N = 1e5 + 10, INF = 1e9, LOG = 21;

long long Bruno( int N, int A[] ){
    mt19937 rd(2008);
    long long X = 0;
    for(int i = 0; i < N; i += 2){
        if(A[i] == 0 && A[i + 1] == 0)continue;
        long long c = (((A[i] << 1) + A[i + 1] - 1) - 1 + 3) % 3;
        X = X * 3 + c;
    }
    return X;
}
#ifdef KHOA
int main(){
    int N = 10;
    int A[] = {1,0,0,0,1,0,1,0,1,0};
    cout<<Bruno(N, A);
}
#endif // KHOA
#Verdict Execution timeMemoryGrader output
Fetching results...