1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include<iostream>
#include<vector>
using namespace std;
typedef long long ll;
vector<ll>s[2];
vector< pair<ll,ll> >v;
ll wyn[40];
ll jd=1;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
	ll n,m,v1,v2,akt;
	cin>>n>>m;
	for(ll i=0;i<m;i++){
		cin>>v1>>v2;
		v.push_back({v1,v2});
	}
	for(ll i=1;i<=n;i++){//lewa granica
		akt=0;
		for(ll j=i;j<=n;j++){///prawa granica
			akt+=(jd<<j);
			s[m%2].push_back(akt);
			for(ll ii=m-1;ii>=0;ii--){
	//			cout<<i<<' '<<j<<' '<<ii<<endl;
				for(ll jj=0;jj<s[(ii%2)^1].size();jj++){
					//cout<<(*it)<<' ';
					if((((s[(ii%2)^1][jj])&(jd<<v[ii].first))==0&&((s[(ii%2)^1][jj])&(jd<<v[ii].second))==0)||(((s[(ii%2)^1][jj])&(jd<<v[ii].first))!=0&&((s[(ii%2)^1][jj])&(jd<<v[ii].second))!=0)){
	//					cout<<"mpu ";
						s[ii%2].push_back(s[(ii%2)^1][jj]);
					}
					else if((((s[(ii%2)^1][jj]))&(jd<<v[ii].first))==0){
						s[ii%2].push_back(s[(ii%2)^1][jj]);
						s[ii%2].push_back(s[(ii%2)^1][jj]+(jd<<v[ii].first)-(jd<<v[ii].second));
	//					cout<<"dodaje dwoch debili: "<<(*it)<<' '<<(*it)+(1<<v[ii].first)-(1<<v[ii].second)<<'\n';
					}
				}
				//cout<<endl;
				//if(s[ii%2].size()>131072){
				//	cout<<ii<<' '<<s[ii%2].size()<<'\n';
				//	return 0;
				//}
				s[(ii%2)^1].clear();
			}
			wyn[j-i+1]+=s[0].size();
			s[0].clear();
			s[1].clear();
		}
	}
	//for(it=wyn[1].begin();it!=wyn[1].end();it++)cout<<(*it)<<' ';
	//cout<<'\n';
	for(int i=1;i<=n;i++)cout<<wyn[i]%2<<' ';
	return 0;
}