CSES - Datatähti 2025 loppu - Results
Submission details
Task:Piiri
Sender:aatukaj
Submission time:2025-01-18 16:46:01 +0200
Language:C++ (C++17)
Status:COMPILE ERROR

Compiler report

input/code.cpp: In function 'void solve()':
input/code.cpp:57:39: error: 'mask' was not declared in this scope; did you mean 'std::filesystem::perms::mask'?
   57 |                         int res = ask(mask);
      |                                       ^~~~
      |                                       std::filesystem::perms::mask
In file included from /usr/include/c++/11/filesystem:44,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:129,
                 from input/code.cpp:1:
/usr/include/c++/11/bits/fs_fwd.h:158:7: note: 'std::filesystem::perms::mask' declared here
  158 |       mask              = 07777,
      |       ^~~~

Code

#include <bits/stdc++.h> 
#define all(v) (v).begin(), (v).end()
using namespace std;
const int maxN = 2e5+10;

int n, m;
void print(int mask) {
	for (int i=0; i<n; i++) {
		cout << char((mask>>i&1)+'0');
	}
}
int ask(int mask) {
	cout << "? ";
	print(mask);
	cout << endl;
	int res = 0;
	for (int i=0; i<m; i++) {
		char c;
		cin >> c;
		res += (c-'0')*(1<<i);
	}
	return res;
}
random_device rd;
mt19937 gen(rd());
uniform_int_distribution<int> dist(0, 0);
int rand(int l, int r) {
	dist.param(uniform_int_distribution<int>::param_type{l, r});
	return dist(gen);
}

void solve() {
	cin >> n >> m;
	map<int, int> prev;
	if (n<=1) {
		for (int mask=0; mask<1<<n; mask++) {
			int res = ask(mask);
			if (prev.count(res)) {
				cout << "YES\n";
				print(prev[res]);
				cout << '\n';
				print(mask);
				cout << endl;
				return;
			}
			prev[res] = mask;
		}
	} else if (n<=30) {
		for (int i=0; i<n; i++) {
			for (int j=i; j<n; j++) {
				for (int k=j; k<n; k++) {
					int mask = 1<<i;
					if (i!=j) mask += 1<<j;
					if (j!=k) mask += 1<<k;
				}
			}
			int res = ask(mask);
			if (prev.count(res)) {
				cout << "YES\n";
				print(prev[res]);
				cout << '\n';
				print(mask);
				cout << endl;
				return;
			}
			prev[res] = mask;
		}
	} else {
		for (int i=0; i<3000; i++) {
			int mask = rand(0, (1<<n)-1);
			int res = ask(mask);
			if (prev.count(res)) {
				cout << "YES\n";
				print(prev[res]);
				cout << '\n';
				print(mask);
				cout << endl;
				return;
			}
			prev[res] = mask;
		}
	}
	cout << "NO\n";
	cout << endl;
}
int main() {
	solve();
}