Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int st[109],e,m,g,M,E;
- char v[109];
- void afisare()
- {
- for (int i=1;i<=e+m;i++) cout<<v[st[i]];
- cout<<'\n';
- }
- int valid(int k)
- {
- for (int i=1;i<=k-2;i++)
- {
- if (v[st[i]]=='E' && v[st[i+1]]=='E' && v[st[i+2]]=='E') return 0;
- if (v[st[i]]=='M' && v[st[i+1]]=='M' && v[st[i+2]]=='M') return 0;
- }
- if (k==e+m)
- {
- E=0,M=0;
- for (int i=1;i<=k;i++)
- {
- if (v[st[i]]=='E') E++;
- else M++;
- }
- if (E!=e || M!=m) return 0;
- }
- return 1;
- }
- void bck(int k)
- {
- for (int i=0;i<=1;i++)
- {
- st[k]=i;
- if (valid(k))
- {
- if (k==e+m) g=1,afisare();
- else bck(k+1);
- }
- }
- }
- int main()
- {
- cin>>e>>m;
- v[0]='E';
- v[1]='M';
- bck(1);
- if (g==0) cout<<"IMPOSIBIL";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement