Guest User

Untitled

a guest
May 23rd, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.77 KB | None | 0 0
  1. vector<pair<char, long long> > re(300000);
  2. string s[300000],res;
  3. char zn[300000];
  4. vector<pair<char, long long> > umn(string s3)
  5. {
  6.     long long k,i,j; vector<pair<char,long long> > s(300000);
  7.     k=0;
  8.     for(i=0;i<re.size();i++)
  9.     {
  10.         s[k].first=re[i].first;
  11.         s[k].second=re[i].second;
  12.         k++;
  13.         for(j=0;j<s3.length();j++)
  14.         {
  15.             s[k].first=s3[j];
  16.             s[k].second=j;
  17.             k++;
  18.         }
  19.     }
  20.     return s;
  21. }
  22. void sl(string s3)
  23. {
  24.     long long i; pair<char, long long> a;
  25.     for(i=0;i<s3.length();i++)
  26.     {
  27.         a.first=s3[i];
  28.         a.second=i;
  29.         re.push_back(a);
  30.     }
  31. }
  32.  
  33. long long dlina(long long k1,long long k2)
  34. {
  35.     long long sum,i,j;
  36.     if(s[0]=="?")
  37.         sum=(k1+k2)/2;
  38.     else
  39.         sum=s[0].length();
  40.     for(i=1;i<j+1;i++)
  41.         if(zn[i-1]=='+')
  42.         {
  43.             if(s[i]=="?")
  44.                 sum=sum+(k1+k2)/2;
  45.             else
  46.                 sum=sum+s[i].length();
  47.         }
  48.         else
  49.         {
  50.             if(s[i]=='+')
  51.                sum=sum/2*(k1+k2)+sum;
  52.             else
  53.                 sum=sum*s[i].length()+sum;
  54.         }
  55.     if(sum==res.length())
  56.         return sum;
  57.     else
  58.         if(sum>res.length())
  59.             return dlina(k1,(k1+k2)/2-1);
  60.         else
  61.             return dlina((k1+k2)/2+1, k2);
  62. }
  63.  
  64. int main()
  65. {
  66.     string s1,v;
  67.     long long i,j,n,y;
  68.     cin>>s1;
  69.     j=0;
  70.     for(i=0;i<s1.length();i++)
  71.         if(s1[i]=='+'||s1[i]=='*')
  72.         {
  73.             zn[j]=s1[i];
  74.             j++;
  75.         }
  76.         else
  77.             if(s1[i]=='=')
  78.             {
  79.                 s1.copy(res,s1.length()-i-1,i+1);
  80.                 break;
  81.             }
  82.             else
  83.             {
  84.                 s[j]=s[j]+s1[i];
  85.             }
  86.     n=dlina(1,300000);
  87.     for(i=0;i<j+1;i++)
  88.         if(s[i]=="?")
  89.         {
  90.             s[i]="";
  91.             for(y=0;y<n;y++)
  92.                 s[i]=s[i]+'?';
  93.         }
  94.     for(i=0;i<s[0].length();i++)
  95.     {
  96.         re[i].first=s[0][i];
  97.         re[i].second=i;
  98.     }
  99.     for(i=1;i<j+1;i++)
  100.         if(zn[i-1]=='+')
  101.             sl(s[i]);
  102.         else
  103.             re=umn(s[i]);
  104.     v="";
  105.     for(i=0;i<n;i++)
  106.         v=v+'0';
  107.     for(i=0;i<res.length();i++)
  108.         if(re[i].first=='?')
  109.             v[re[i].second]=res[i];
  110.     cout<<v;
  111.     return 0;
  112. }
Add Comment
Please, Sign In to add comment