Submission #1188422

#TimeUsernameProblemLanguageResultExecution timeMemory
1188422kl0989eAlternating Current (BOI18_alternating)C++20
13 / 100
3092 ms1864 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define fi first
#define se second
#define pb push_back
#define vi vector<int>
#define vl vector<ll>
#define pi pair<int, int>
#define pl pair<ll,ll>
#define all(x) (x).begin(),(x).end()

int32_t main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n,m;
	cin >> n >> m;
	vector<pi> inte(m);
	for (int i=0; i<m; i++) {
		cin >> inte[i].fi >> inte[i].se;
		inte[i].fi--;
		inte[i].se--;
	}
	for (int msk=0; msk<(1<<m); msk++) {
		vi ok1(n,0),ok2(n,0);
		for (int i=0; i<m; i++) {
			if (msk&(1<<i)) {
				for (int j=inte[i].fi; ; j=(j+1)%n) {
					ok1[j]=1;
					if (j==inte[i].se) {
						break;
					}
				}
			}
			else {
				for (int j=inte[i].fi; ; j=(j+1)%n) {
					ok2[j]=1;
					if (j==inte[i].se) {
						break;
					}
				}
			}
		}
		if (accumulate(all(ok1),0)==n && accumulate(all(ok2),0)==n) {
			for (int i=0; i<m; i++) {
				if (msk&(1<<i)) {
					cout << 1;
				}
				else {
					cout << 0;
				}
			}
			cout << '\n';
			return 0;
		}
	}
	cout << "impossible\n";
	/*vi ord(m);
	iota(all(ord),0);
	sort(all(ord),[&](int a, int b){return (inte[a].fi<=inte[a].se?inte[a].fi:inte[a].se-n)<(inte[b].fi<=inte[b].se?inte[b].fi:inte[b].se-n);});
	vector<vector<vi>> dp(m,vector<vi>(n+1,vi(n+1,1e9)));
	dp[0][inte[ord[0]].fi+1][0]=n-1;
	for (int i=0; i<m; i++) {
		for (int j=0; j<n; j++) {
			for (int k=0; k<n; k++) {
				if (dp[i][j][k]==1e9) {
					continue;
				}
				if (j>=inte[ord[0]].se && inte[ord[0]].fi<=inte[ord[0]].se) {

				}
			}
		}
	}*/
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...