Submission #1247372

#TimeUsernameProblemLanguageResultExecution timeMemory
1247372_asunaaBroken Device (JOI17_broken_device)C++20
0 / 100
53 ms17216 KiB
#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;
int a[40];
//void Set (int a, int b){
//	cout << b;
//}
void Anna (int N, long long X, int K, int P[]){
	long long i, j, l, r, mid, p, q, k, t, n, m, b, c, d, ans, cnt, res, arr[1000005], arr2[1000005];
	string s = " ";
	while (X > 1){
		s.push_back((char)(X % 2 + 48));
		X /= 2;
	}
	s.push_back((char)(X + 48));
	d = s.length() - 1;
//	cout << s << "\n";
	p = 1;
	t = 0;
	for (i = 1; i <= N; i += 1){
		arr[i] = 0;
	}
	for (i = 0; i < K; i += 1){
		arr[P[i]] = 1;
	}
	for (i = 1; i <= N; i += 3){
		res = arr[i] + arr[i + 1] + arr[i + 2];
		if (res >= 2 || p > d){
			arr2[t] = 0;
			arr2[t + 1] = 0;
			arr2[t + 2] = 0;
		}
		else if (res == 1){
			if (p == d){
				s += "0";
			}
			if (s[p] == 49){
				if (arr[i] == 1){
					arr2[t] = 0;
					arr2[t + 1] = 1;
					arr2[t + 2] = 1;
				}
				else{
					arr2[t] = 1;
					arr2[t + 1] = 0;
					arr2[t + 2] = 0;
				}
				p += 1;
			}
			else{
				if (arr[i + 2] == 1){
					if (s[p + 1] == 48){
						arr2[t] = 0;
						arr2[t + 1] = 1;
						arr2[t + 2] = 0;
					}
					else{
						arr2[t] = 1;
						arr2[t + 1] = 1;
						arr2[t + 2] = 0;
					}
					p += 2;
				}
				else{
					arr2[t] = 0;
					arr2[t + 1] = 0;
					arr2[t + 2] = 1;
					p += 1;
				}
			}
		}
		else{
			if (p == d){
				s += "0";
			}
			if (s[p] == 49 && s[p + 1] == 49){
				arr2[t] = 1;
				arr2[t + 1] = 1;
				arr2[t + 2] = 1;
			}
			else if (s[p] == 49 && s[p + 1] == 48){
				arr2[t] = 1;
				arr2[t + 1] = 0;
				arr2[t + 2] = 1;
			}
			else if (s[p] == 48 && s[p + 1] == 49){
				arr2[t] = 1;
				arr2[t + 1] = 1;
				arr2[t + 2] = 0;
			}
			else{
				arr2[t] = 0;
				arr2[t + 1] = 1;
				arr2[t + 2] = 0;
			}
			p += 2;
		}
		t += 3;
	}
	for (i = 0; i < t; i += 1){
		Set(i, arr2[i]);
	}
	return;
}

//int main(){
//	for (i = 0; i < 40; i += 1){
//		a[i] = i;
//	}
//	Anna(150, 1000000000000000000, 40, a);
//}
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;
int a[150];
string ss = "001000001000001000001000001000001000001000001000001000001000001000001000001000010010110010111110111010101111101110101101111110101101010010111111110101";
long long Bruno (int N, int A[]){
	long long i, j, l, r, mid, p, q, k, t, n, m, b, c, d, ans, cnt, res, arr[1000005];
	string s;
	ans = 0;
	s = " ";
	for (i = 1; i <= N; i += 3){
		if (A[i - 1] == 0 && A[i] == 0 && A[i + 1] == 0){
			continue;
		}
		else if (A[i - 1] == 0 && A[i] == 0 && A[i + 1] == 1){
			s += "0";
		}
		else if (A[i - 1] == 0 && A[i] == 1 && A[i + 1] == 0){
			s += "00";
		}
		else if (A[i - 1] == 0 && A[i] == 1 && A[i + 1] == 1){
			s += "1";
		}
		else if (A[i - 1] == 1 && A[i] == 0 && A[i + 1] == 0){
			s += "1";
		}
		else if (A[i - 1] == 1 && A[i] == 0 && A[i + 1] == 1){
			s += "10";
		}
		else if (A[i - 1] == 1 && A[i] == 1 && A[i + 1] == 0){
			s += "01";
		}
		else{
			s += "11";
		}
//		cout << s << "\n";
	}
//	cout << s << "\n";
	for (i = 1; i < s.length(); i += 1){
		ans += (long long)(s[i] - 48) * (1ll << (i - 1));
	}
	return ans;
}

//int main(){
//	for (i = 0; i < 150; i += 1){
//		a[i] = (long long)(ss[i]) - 48;
////		cout << a[i];
//	}
////	cout << "\n";
//	cout << Bruno(150, a);
//}
#Verdict Execution timeMemoryGrader output
Fetching results...