Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- double WiFi(std::string s1, std::string s2) {
- int n,m,i,j,k,l,r,res,a[2000001],b[201];
- double ans = 0;
- k = 0;
- for (i = 0; i < s1.length(); i++)
- {
- if (s1[i] == '+') k++; else k--;
- }
- j = 0;
- l = 1;
- r = 2;
- for (i = 1; i <= 1000000; i++) a[i] = 0;
- for (i = 0; i < s2.length(); i++)
- {
- if (s2[i] == '+')
- {
- for (j = l; j < r; j++) a[j]++;
- }
- if (s2[i] == '-')
- {
- for (j = l; j < r; j++) a[j]--;
- }
- if (s2[i] == '?')
- {
- for (j = l; j < r; j++)
- {
- a[j*2] = a[j]+1;
- a[j*2+1] = a[j]-1;
- }
- l = r;
- r = r*2;
- }
- }
- j = -1;
- for (i = l; i < r; i++)
- {
- j++;
- a[j] = a[i];
- if (a[i] == k) ans++;
- }
- return ans/(r-l);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement