Advertisement
Andriy_Dudka

Untitled

Jan 13th, 2016
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.90 KB | None | 0 0
  1. double WiFi(std::string s1, std::string s2) {
  2.     int n,m,i,j,k,l,r,res,a[2000001],b[201];
  3.     double ans = 0;
  4.     k = 0;
  5.     for (i = 0; i < s1.length(); i++)
  6.     {
  7.         if (s1[i] == '+') k++; else k--;
  8.     }
  9.     j = 0;
  10.     l = 1;
  11.     r = 2;
  12.     for (i = 1; i <= 1000000; i++) a[i] = 0;
  13.     for (i = 0; i < s2.length(); i++)
  14.     {
  15.         if (s2[i] == '+')
  16.         {
  17.             for (j = l; j < r; j++) a[j]++;
  18.         }
  19.         if (s2[i] == '-')
  20.         {
  21.             for (j = l; j < r; j++) a[j]--;
  22.         }
  23.         if (s2[i] == '?')
  24.         {
  25.             for (j = l; j < r; j++)
  26.             {
  27.                 a[j*2] = a[j]+1;
  28.                 a[j*2+1] = a[j]-1;
  29.             }
  30.             l = r;
  31.             r = r*2;
  32.         }
  33.     }
  34.     j = -1;
  35.     for (i = l; i < r; i++)
  36.     {
  37.         j++;
  38.         a[j] = a[i];
  39.         if (a[i] == k) ans++;
  40.     }
  41.     return ans/(r-l);
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement