#include "Annalib.h"
#include <bits/stdc++.h>
using namespace std;
void Anna(long long N, long long X, long long K, long long P[])
{
map<vector<int>, vector<int>> M;
M[{1, 1}] = {1, 1, 1};
M[{1}] = {1, 1, 0};
M[{1, 0}] = {1, 0, 1};
M[{0}] = {1, 0, 0};
M[{0, 1}] = {0, 1, 1};
M[{0, 0}] = {0, 1, 0};
vector<int> P2(N);
for (int i = 0; i < K; i++)
P2[P[i]] = 1;
vector<int> ans(N);
int buff = 0;
vector<int> bits;
while (X)
{
bits.push_back(X % 2);
X /= 2;
}
reverse(bits.begin(), bits.end());
for (int i = 0; i < 150; i += 3)
{
if (buff == bits.size())
break;
vector<int> temp;
if (P2[i] + P2[i + 2] + P2[i + 2] > 1)
continue;
if (P2[i] == 1)
{
if (bits[buff] == 1)
{
temp = {0, 0, 1};
buff++;
}
if (buff < bits.size() - 1 && bits[buff] == 0)
{
temp = M[{bits[buff], bits[buff + 1]}];
buff += 2;
}
}
else if (P2[i + 1] == 1)
{
if (bits[buff] == 1)
temp = {0, 0, 1};
else
temp = {1, 0, 0};
buff++;
}
else if (P2[i + 2] == 1)
{
if (bits[buff] == 1)
temp = {1, 1, 0};
else
temp = {1, 0, 0};
}
else
{
if (buff < bits.size() - 1)
{
temp = M[{bits[buff], bits[buff + 1]}];
buff += 2;
}
else
{
temp = M[{bits[buff]}];
buff++;
}
}
ans[i] = temp[0], ans[i + 1] = temp[1], ans[i + 2] = temp[2];
}
for (int i = 0; i < N; i++)
{
// cout << ans[i] << ' ';
Set(i, ans[i]);
}
}
/*int main()
{
long long N, X, K;
cin >> N >> X >> K;
long long P[N];
srand(time(0));
for (long long i = 0; i < K; i++)
P[i] = rand() % N;
Anna(N, X, K, P);
}*/
#include "Brunolib.h"
#include <bits/stdc++.h>
using namespace std;
long long Bruno(int N, int A[])
{
map<vector<int>, vector<int>> M;
M[{1, 1, 1}] = {1, 1};
M[{1, 1, 0}] = {1};
M[{1, 0, 1}] = {1, 0};
M[{1, 0, 0}] = {0};
M[{0, 1, 1}] = {0, 1};
M[{0, 1, 0}] = {0, 0};
M[{0, 0, 1}] = {1};
long long X = 0;
for (int i = 0; i < 150; i += 3)
{
vector<int> temp = {A[i], A[i + 1], A[i + 2]};
if (temp[0] + temp[1] + temp[2] == 0)
continue;
else
temp = M[temp];
for (int j = 0; j < temp.size(); j++)
{
X *= 2;
X += temp[j];
}
}
return X;
}
/*int main()
{
int N;
cin >> N;
int A[N];
for (int i = 0; i < N; i++)
cin >> A[i];
cout << Bruno(N, A);
}*/
Compilation message
Anna.cpp: In function 'void Anna(long long int, long long int, long long int, long long int*)':
Anna.cpp:28:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
28 | if (buff == bits.size())
| ~~~~~^~~~~~~~~~~~~~
Anna.cpp:40:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
40 | if (buff < bits.size() - 1 && bits[buff] == 0)
| ~~~~~^~~~~~~~~~~~~~~~~
Anna.cpp:63:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
63 | if (buff < bits.size() - 1)
| ~~~~~^~~~~~~~~~~~~~~~~
/usr/bin/ld: /tmp/ccJHim2d.o: in function `main':
grader_anna.c:(.text.startup+0x10b): undefined reference to `Anna(int, long long, int, int*)'
collect2: error: ld returned 1 exit status
Bruno.cpp: In function 'long long int Bruno(int, int*)':
Bruno.cpp:22:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
22 | for (int j = 0; j < temp.size(); j++)
| ~~^~~~~~~~~~~~~