Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define gc c=getchar()
- #define r(x) read(x)
- #define ll long long
- template<typename T>
- inline void read(T&x){
- x=0;T k=1;char gc;
- while(!isdigit(c)){if(c=='-')k=-1;gc;}
- while(isdigit(c)){x=x*10+c-'0';gc;}x*=k;
- }
- const int N=1005;
- int n;
- char s[N];
- inline int ask(){
- putchar('?');
- putchar(' ');
- for(int i=0;i<n;++i)putchar(s[i]);
- putchar('\n');
- fflush(stdout);
- int x;r(x);
- return x;
- }
- int main(){
- // freopen(".in","r",stdin);
- // freopen(".out","w",stdout);
- r(n);
- for(int i=0;i<n;++i)s[i]='0';
- int a=ask();
- s[0]++;
- int b=ask();
- int ans0,ans1;
- if(a>b){
- ans1=0;
- int l=1,r=n-1,mid;
- while(l<=r){
- if(l==r){
- ans0=l;
- break;
- }
- mid=(l+r)>>1;
- for(int i=0;i<n;++i)s[i]=(l<=i && i<=mid)+'0';
- if(a-ask()==(mid-l+1))l=mid+1;
- else r=mid;
- }
- }
- else {
- ans0=0;
- int l=1,r=n-1,mid;
- while(l<=r){
- if(l==r){
- ans1=l;
- break;
- }
- mid=(l+r)>>1;
- for(int i=0;i<n;++i)s[i]=(l<=i && i<=mid)+'0';
- if(ask()-a==(mid-l+1))l=mid+1;
- else r=mid;
- }
- }
- printf("! %d %d\n",ans0+1,ans1+1);
- fflush(stdout);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment