Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- #include <cstdlib>
- #include <vector>
- #include <stack>
- #include <queue>
- #include <cmath>
- #include <cstring>
- #include <string>
- #include <map>
- #include <set>
- #include <list>
- #include <deque>
- #define FOR(i,a,b) for (int i=(a),_b=(b);i<=_b;i++)
- #define DOWFOR(i,a,b) for (int i=(a),_b=(b);i>=_b;i--)
- #define mp make_pair
- #define pb push_back
- #define reset(c,x) memset(c,x,sizeof(c))
- #define oo 1000000000
- using namespace std;
- char s[100];
- int m,res[10000],sl=0,w[20],t=0,sum[2];
- bool ok;
- void duyet(int x)
- {
- if (sl>=m&&ok==false)
- {
- printf("YES\n");
- FOR(i,1,m)
- printf("%d ",res[i]);
- ok=true;
- return;
- }
- if (ok==false)
- FOR(i,1,t)
- if (ok==false)
- {
- if (w[i]!=res[sl])
- if (w[i]+sum[x%2]>sum[(x+1)%2])
- {
- sl++;
- res[sl]=w[i];
- sum[x%2]+=(w[i]);
- // cout<<sl<<" "<<sum[x%2]<<" "<<sum[(x+1)%2]<<endl;
- duyet(x+1);
- sl--;
- sum[x%2]-=(w[i]);
- }
- }
- else
- break;
- return ;
- }
- int main()
- {
- // freopen("input.txt","r",stdin);
- // freopen("output.txt","w",stdout);
- gets(s);
- scanf("%d",&m);
- reset(w,0);
- reset(res,0);
- FOR(i,0,strlen(s)-1)
- if (s[i]=='1')
- {
- t++;
- w[t]=i+1;
- }
- // FOR(i,1,t)
- // cout<<w[i]<<endl;
- if (t<1)
- {
- printf("NO");
- return 0;
- }
- sum[0]=0;
- sum[1]=w[1];
- sl=1;
- ok=false;
- FOR(i,1,t)
- if (ok==false)
- {
- sum[0]=0;
- sum[1]=w[i];
- res[1]=w[i];
- sl=1;
- duyet(2);
- }
- else
- {
- break;
- }
- if (ok==false)
- {
- printf("NO");
- return 0;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement