Submission #1019916

#TimeUsernameProblemLanguageResultExecution timeMemory
1019916UnforgettableplBroken Device 2 (JOI22_device2)C++17
13 / 100
478 ms29948 KiB
#include "Anna.h"
#include <bits/stdc++.h>
using namespace std;

const int M = 2000;

namespace {

tuple<int,int,int> generate(long long x){
    long long curr = 0;
    for(int len=4;len<=M;len++){
        if(curr+3*(2*(len-1)-5)-1<x){
            curr+=3*(2*(len-1)-5);
            continue;
        }
        for(int turnedon=6;turnedon<=2*(len-1);turnedon++){
            if(curr++==x)return {len,turnedon,0};
            if(curr++==x)return {len,turnedon,1};
            if(curr++==x)return {len,turnedon,3};
        }
    }
    assert(false);
}

}

int Declare() {return M;}

pair<vector<int>, vector<int>> Anna(long long A) {
    auto [len,ones,starting] = generate(A);
    vector<int> a(len,0),b(len,0);
    for(int i=0;i<starting;i++){
        a[i]=b[i]=1;
        ones-=2;
    }
    for(int i=starting+1;i<len;i++){
        if(ones){a[i]=1;ones--;}
        if(ones){b[i]=1;ones--;}
    }
    return {a,b};
}
#include "Bruno.h"
#include <bits/stdc++.h>
using namespace std;

const int M = 2000;

namespace {


long long generate(int tarlen,int taron,int starting){
    long long curr = 0;
    for(int len=4;len<=M;len++){
        if(len!=tarlen){
            curr+=3*(2*(len-1)-5);
            continue;
        }
        for(int turnedon=6;turnedon<=2*(len-1);turnedon++){
            if(turnedon!=taron){curr+=3;continue;}
            if(starting==0)return curr;
            curr++;
            if(starting==1)return curr;
            curr++;
            if(starting==3)return curr;
            curr++;
        }
    }
    assert(false);
}

}

long long Bruno(vector<int> u) {
    int len = u.size()/2;
    int ones = 0;
    for(int&i:u)ones+=i;
    int starting = 0;
    for(int&i:u){
        if(i) starting++;
        else break;
    }
    if(0<=starting and starting<=0)starting=0;
    else if(1<=starting and starting<=2)starting=1;
    else if(3<=starting and starting<=6)starting=3;
    return generate(len,ones,starting);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...