Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- vector<pair<char, long long> > re(300000);
- string s[300000],res;
- char zn[300000];
- vector<pair<char, long long> > umn(string s3)
- {
- long long k,i,j; vector<pair<char,long long> > s(300000);
- k=0;
- for(i=0;i<re.size();i++)
- {
- s[k].first=re[i].first;
- s[k].second=re[i].second;
- k++;
- for(j=0;j<s3.length();j++)
- {
- s[k].first=s3[j];
- s[k].second=j;
- k++;
- }
- }
- return s;
- }
- void sl(string s3)
- {
- long long i; pair<char, long long> a;
- for(i=0;i<s3.length();i++)
- {
- a.first=s3[i];
- a.second=i;
- re.push_back(a);
- }
- }
- long long dlina(long long k1,long long k2)
- {
- long long sum,i,j;
- if(s[0]=="?")
- sum=(k1+k2)/2;
- else
- sum=s[0].length();
- for(i=1;i<j+1;i++)
- if(zn[i-1]=='+')
- {
- if(s[i]=="?")
- sum=sum+(k1+k2)/2;
- else
- sum=sum+s[i].length();
- }
- else
- {
- if(s[i]=='+')
- sum=sum/2*(k1+k2)+sum;
- else
- sum=sum*s[i].length()+sum;
- }
- if(sum==res.length())
- return sum;
- else
- if(sum>res.length())
- return dlina(k1,(k1+k2)/2-1);
- else
- return dlina((k1+k2)/2+1, k2);
- }
- int main()
- {
- string s1,v;
- long long i,j,n,y;
- cin>>s1;
- j=0;
- for(i=0;i<s1.length();i++)
- if(s1[i]=='+'||s1[i]=='*')
- {
- zn[j]=s1[i];
- j++;
- }
- else
- if(s1[i]=='=')
- {
- s1.copy(res,s1.length()-i-1,i+1);
- break;
- }
- else
- {
- s[j]=s[j]+s1[i];
- }
- n=dlina(1,300000);
- for(i=0;i<j+1;i++)
- if(s[i]=="?")
- {
- s[i]="";
- for(y=0;y<n;y++)
- s[i]=s[i]+'?';
- }
- for(i=0;i<s[0].length();i++)
- {
- re[i].first=s[0][i];
- re[i].second=i;
- }
- for(i=1;i<j+1;i++)
- if(zn[i-1]=='+')
- sl(s[i]);
- else
- re=umn(s[i]);
- v="";
- for(i=0;i<n;i++)
- v=v+'0';
- for(i=0;i<res.length();i++)
- if(re[i].first=='?')
- v[re[i].second]=res[i];
- cout<<v;
- return 0;
- }
Add Comment
Please, Sign In to add comment