제출 #1154695

#제출 시각아이디문제언어결과실행 시간메모리
1154695modwweAncient Machine (JOI21_ancient_machine)C++20
100 / 100
55 ms6644 KiB
//#include "gap.h"
//#include "mushrooms.h"
#include "Anna.h"
#pragma GCC optimize("Ofast,unroll-loops")
#include<bits/stdc++.h>
//#define ll   long long
#define ll long long
#define down cout<<'\n';
#define debug cout<<" cucuucucuuu",down
#define modwwe  int t;cin>>t; while(t--)
#define bit(i,j) (i>>j&1)
#define sobit(a) __builtin_popcountll(a)
#define task2 "ftree"
#define task "test"
#define fin(x) freopen(x".inp","r",stdin)
#define fou(x) freopen(x".out","w",stdout)
#define pb push_back
#define mask(k) (1ll<<k)
#define checktime   cerr << (double)clock() / CLOCKS_PER_SEC * 1000  << " ms";
using namespace std;
#define getchar_unlocked getchar
mt19937 rd(chrono::steady_clock::now().time_since_epoch().count());
int rand(int l,int r)
{
    return uniform_int_distribution<int>(l,r)(rd);
}
void phongbeo();
const ll inf = 1e18;
const ll mod2 = 1e9+7;
const ll base=67;
ll n, m, s1, s2, s4, s3, sf, k, s5, s6, mx, s7, s8, s9, mx2, res, dem2 = 0, dem = 0, s33, dem3, dem4, mid, l2, r2, center;
ll  i, s10, s12,k1,k2,k3,s11,lim,w,l,r ;
ll kk;
ll t;
ll el = 19;
ll f[201];
ll a[201];
bool c[100002];
vector<int> send;
ll decode(string s)
{
    ll ss=0;
    for(ll i=0; i<s.size(); i++)
        if(s[i]=='1')
        {
            ss+=f[62-i];
        }
    return ss;
}
string encode(string s,ll sz)
{
    ll ss=0;
    for(ll i=0; i<s.size(); i++)
        ss=ss+mask(i)*(s[i]-'0');
    ss++;
    string sc;
    for(ll i=0; i<sz; i++)
        if(f[62-i]<ss)
        {
            ss-=f[62-i];
            sc=sc+'1';
        }
        else sc=sc+'0';
    return sc;
}
string changebit(ll x)
{
    string s;
    for(ll i=0; i<44; i++)
        if(bit(x,i))
            s=s+'1';
        else s=s+'0';
    return s;
}
void build()
{
    f[0]=1;
    f[1]=2;
    f[2]=3;
    for(ll i=2; i<=63; i++)
        f[i]=f[i-1]+f[i-2];

}
void Anna(int n,vector<char>a)
{
    bool de=0;
    bool de2=0;
    build();
    for(ll i=0; i<a.size(); i++)
    {
        if(!de&&i!=a.size()-1&&a[i+1]=='X')continue;
        if(de&&i!=a.size()-1&&a[i+1]=='Z') continue;
        if(!de&&a[i]=='X')
        {
            c[i]=1;
            de=1;
            if(i!=a.size()-1&&a[i+1]=='Z')
                de2=1;
            i++;
        }
        else  if(de&&a[i]=='Z')
            c[i]=1;
    }
    string s;
    n+=2;
    c[n-1]=de2;
    for(ll i=0; i<n; i++)
    {
        if(i!=n-1&&c[i]==c[i+1]&&c[i]==1)assert(0);
        if(c[i])s=s+"1";
        else s=s+"0";
        if(i!=0)
            if(i%63==62||i==n-1)
            {
                s5=decode(s);
                // cout<<s5,down
                string sc=changebit(s5);
                for(ll i=0; i<sc.size(); i++)
                    Send(sc[i]-'0');
                s="";
            }
    }
}
//#include "gap.h"
//#include "mushrooms.h"
#include "Bruno.h"
#pragma GCC optimize("Ofast,unroll-loops")
#include<bits/stdc++.h>
//#define int   long long
#define ll long long
#define down cout<<'\n';
#define debug cout<<" cucuucucuuu",down
#define modwwe  int t;cin>>t; while(t--)
#define bit(i,j) (i>>j&1)
#define sobit(a) __builtin_popcountll(a)
#define task2 "ftree"
#define task "test"
#define fin(x) freopen(x".inp","r",stdin)
#define fou(x) freopen(x".out","w",stdout)
#define pb push_back
#define mask(k) (1ll<<k)
#define checktime   cerr << (double)clock() / CLOCKS_PER_SEC * 1000  << " ms";
using namespace std;
#define getchar_unlocked getchar
mt19937 rd(chrono::steady_clock::now().time_since_epoch().count());
int rand(int l,int r)
{
    return uniform_int_distribution<int>(l,r)(rd);
}
void phongbeo();
const ll inf = 1e18;
const ll mod2 = 1e9+7;
const ll base=67;
ll  n, m, s1, s2, s4, s3, sf, k, s5, s6, mx, s7, s8, s9, mx2, res, dem2 = 0, dem = 0, s33, dem3, dem4, mid, l2, r2, center;
ll  i, s10, s12,k1,k2,k3,s11,lim,w,l,r ;
ll kk;
ll t;

ll f[201];
ll a[201];
bool c[100001];
vector<int> send;
void Send(ll x)
{
    send.pb(x);
}
ll decode(string s)
{
    ll ss=0;
    for(ll i=0; i<s.size(); i++)
        if(s[i]=='1'){
            ss+=f[62-i];
            }
    return ss;
}
string encode(string s,ll sz)
{
    ll ss=0;
    for(ll i=0; i<s.size(); i++)
        ss=ss+mask(i)*(s[i]-'0');
    ss++;
    string sc;
    for(ll i=0; i<sz; i++)
        if(f[62-i]<ss)
        {
            ss-=f[62-i];
            sc=sc+'1';
        }
        else sc=sc+'0';
    return sc;
}
string changebit(ll x)
{
    string s;
    for(ll i=0; i<44; i++)
        if(bit(x,i))
            s=s+'1';
        else s=s+'0';
    return s;
}
void build()
{
    f[0]=1;
    f[1]=2;
    f[2]=3;
    for(ll i=2; i<=63; i++)
        f[i]=f[i-1]+f[i-2];

}
vector<int> v;
void Bruno(int n,int L,vector<int> a)
{
    build();
    string haha,s;
    ll sz=n+2;
    for(ll i=0; i<a.size(); i++)
    {
        if(a[i]==1)s=s+'1';
        else s=s+'0';
        if(i!=0&&i%44==43||i==a.size()-1)
        {
            haha=haha+encode(s,min(sz,63ll));
            s="";
            sz-=63;
        }
    }
    v.pb(-1);
    for(ll i=0; i<haha.size()-1; i++)
        if(haha[i]=='1')
            v.pb(i);
    if(v.back()!=n-1)
        v.pb(n-1);
    for(ll i=1; i<v.size(); i++)
    {
        for(ll j=v[i]-1; j>v[i-1]; --j)
            Remove(j);
        if(i==1)
        {
            if(haha[haha.size()-1]=='1'){
                Remove(v[i]+1);
            v[i]++;
            }
            continue;
        }
        Remove(v[i]);
    }
    if(haha[haha.size()-1]=='1')
        Remove(v[1]-1);
    else Remove(v[1]);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...