Submission #965619

# Submission time Handle Problem Language Result Execution time Memory
965619 2024-04-19T03:17:07 Z emptypringlescan Ancient Machine (JOI21_ancient_machine) C++17
5 / 100
43 ms 9348 KB
#include "Anna.h"
#include <bits/stdc++.h>
using namespace std;
#define int long long
long long lt[]={1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155,165580141,267914296};
int kth(vector<int> bits){
	int l=bits.size();
	int ret=0;
	for(int i=0; i<l; i++){
		if(bits[i]) ret+=lt[l-i-1];
	}
	return ret;
}
void Anna(int32_t N, vector<char> S){
	bool st=true;
	vector<int> old;
	int fir=0;
	for(int i=0; i<N; i++){
		if(st&&S[i]=='X') old.push_back(0),st=false,fir=i;
		else if(st||S[i]=='Z') old.push_back(1);
		else old.push_back(0);
	}
	for(int i=0; i<(41-N%40)%40; i++) old.push_back(0);
	for(int i=0; i<(int)old.size()-1; i++) if(old[i+1]&old[i]) old[i]=0;
	for(int i=0; i<N; i+=40){
		vector<int> yey;
		for(int j=0; j<40; j++){
			yey.push_back(old[i+j]);
		}
		int x=kth(yey);
		for(int j=0; j<28; j++) Send((x>>j)&1);
	}
	if(fir==0) Send(0);
}
#include "Bruno.h"
#include <bits/stdc++.h>
using namespace std;
#define int long long
long long lt[]={1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368,75025,121393,196418,317811,514229,832040,1346269,2178309,3524578,5702887,9227465,14930352,24157817,39088169,63245986,102334155,165580141,267914296};
vector<int> htk(int x){
	vector<int> ret(40);
	for(int i=0; i<40; i++){
		if(x>=lt[40-i-1]){
			ret[i]=1;
			x-=lt[40-i-1];
		}
	}
	return ret;
}
void Bruno(int32_t N, int32_t L, std::vector<int32_t> b) {
	vector<int> A;
	assert(L%28==0||L%28==1);
	for(int i=0; i<L-L%28; i+=28){
		int x=0;
		for(int j=0; j<28; j++){
			if(b[j]) x+=1ll<<j;
		}
		vector<int> yey=htk(x);
		for(int j:yey) A.push_back(j);
	}
	stack<int> st;
	bool s=true;
	if(L%28==1) s=false;
	for(int i=0; i<N; i++){
		if(A[i]==0&&s==false) st.push(i);
		else{
			while(st.size()>1){
				Remove(st.top());
				st.pop();
			}
			Remove(i);
			if(A[i]==1) s=false;
		}
	}
	while(!st.empty()){
		Remove(st.top());
		st.pop();
	}
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 784 KB Output is correct
2 Correct 0 ms 796 KB Output is correct
3 Correct 0 ms 796 KB Output is correct
4 Correct 0 ms 796 KB Output is correct
5 Correct 1 ms 784 KB Output is correct
6 Correct 0 ms 784 KB Output is correct
7 Correct 0 ms 784 KB Output is correct
8 Correct 1 ms 784 KB Output is correct
9 Correct 0 ms 796 KB Output is correct
10 Correct 0 ms 796 KB Output is correct
11 Correct 0 ms 792 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 43 ms 9348 KB Wrong Answer [6]
2 Halted 0 ms 0 KB -