제출 #419786

#제출 시각아이디문제언어결과실행 시간메모리
419786amoo_safarAncient Machine (JOI21_ancient_machine)C++17
69 / 100
89 ms9628 KiB
#include "Anna.h"
#include <bits/stdc++.h>

#define pb push_back

using namespace std;

typedef long long ll;

const int bl = 76;
const int Log = 53;
ll fib[bl];

void Send(vector<int> seq){
	while((int) seq.size() % bl != 0)
		seq.pb(0);
	ll cd = 0;
	for(int i = 0; i < (int) seq.size(); i += bl){
		int j = i + bl - 1;
		while(i <= j){
			if(seq[j] == 0){
				j--;
				continue;
			}
			cd += fib[j - i];
			j -= 2;
		}
		for(int c = 0; c < Log; c++){
			Send(cd & 1);
			cd >>= 1;
		}
	}
}

void Anna(int _n, vector<char> S){
	fib[0] = 1;
	fib[1] = 2;
	for(int i = 2; i < bl; i++) fib[i] = fib[i - 1] + fib[i - 2];

	vector<int> V(_n, 0), seq;
	int fl = 0, fly = 1;
	for(int i = _n - 1; i >= 0; i--){
		if(S[i] == 'Y') fly = 1;
		if(S[i] == 'Z' && fly == 1)
			V[i] = 1, fly = 0;
	}
	int i = 0;
	for(auto c : S){
		if(fl == 0 && c == 'X'){
			fl = 1;
			seq.pb(1);
			seq.pb(0);
		} else {
			seq.pb(fl ? V[i] : 0);
		}
		i ++;
	}
	// Send(seq);
	for(auto x : seq)
		Send(x);
	// for(auto x : seq)
		// cerr << x;
	// cerr << '\n';
	
}
#include "Bruno.h"
#include <bits/stdc++.h>
#define pb push_back

using namespace std;

typedef long long ll;

const int bl = 76;
const int Log = 53;
ll fib2[bl];


void Bruno(int _n, int L, vector<int> B) {
	
	// vector<int> B;
	// for(int i = 0; i < L; i += bl){

	// }
	
	// L = B.size();
	for(int i = 0; i + 1 < L; i++)
		assert((B[i] == 0) || (B[i + 1] == 0));
	int fl = 0;
	vector<int> A;
	for(int i = 0; i < L; i++){
		if(B[i] == 0) A.pb(0);
		else {
			A.pb(1);
			if(!fl) i++;
			fl = 1;
		}
	}
	A.resize(_n, 0);
	L = _n;

	int cnt = 0;
	vector<int> mk(_n, 0);
	for (int i = 0; i < L; i++) {
		// cerr << "!" << A[i] << '\n';
		if(A[i] == 1){
			cnt ++;
			for(int j = i - 1; j >= 0; j--){
				if(A[j] == 1) break;
				Remove(j);
				mk[j] = 1;
			}
			if(cnt != 1){
				Remove(i);
				mk[i] = 1;
			};
		}
	}
	for(int i = 0; i < _n; i++) if(!mk[i]) Remove(i);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...