#include <bits/stdc++.h>
using namespace std;
int main() {
string s = "00000000001111111111"; // red and white roses
sort(s.begin(), s.end());
int total_permutations = 0;
int count_in_church = 0;
// check next lexicographic permutation of s
do {
total_permutations += 1;
// check if bride steps into church by checking if
// the number of ones exceeds the number of zeros
int cnt_0 = 0;
int cnt_1 = 0;
for (char c : s) {
if (c == '0') {cnt_0 += 1;}
else {cnt_1 += 1;}
if (cnt_1 > cnt_0) {
count_in_church += 1;
break;
}
}
} while(std::next_permutation(s.begin(), s.end()));
cout << "number of times bride entered church: " << count_in_church << '\n';
cout << "total permutations: " << total_permutations << '\n';
cout << "probability: " << 1.0 * count_in_church / total_permutations << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKaW50IG1haW4oKSB7CiAgICBzdHJpbmcgcyA9ICIwMDAwMDAwMDAwMTExMTExMTExMSI7ICAgICAgICAgICAgLy8gcmVkIGFuZCB3aGl0ZSByb3NlcyAKICAgIHNvcnQocy5iZWdpbigpLCBzLmVuZCgpKTsKICAKICAgIGludCB0b3RhbF9wZXJtdXRhdGlvbnMgPSAwOwogICAgaW50IGNvdW50X2luX2NodXJjaCA9IDA7CiAgCiAgCiAgICAvLyBjaGVjayBuZXh0IGxleGljb2dyYXBoaWMgcGVybXV0YXRpb24gb2YgcyAKICAgIGRvIHsKICAgICAgICB0b3RhbF9wZXJtdXRhdGlvbnMgKz0gMTsKICAKICAgICAgICAvLyBjaGVjayBpZiBicmlkZSBzdGVwcyBpbnRvIGNodXJjaCBieSBjaGVja2luZyBpZgogICAgICAgIC8vIHRoZSBudW1iZXIgb2Ygb25lcyBleGNlZWRzIHRoZSBudW1iZXIgb2YgemVyb3MKICAgICAgICBpbnQgY250XzAgPSAwOwogICAgICAgIGludCBjbnRfMSA9IDA7CiAgICAgICAgCiAgICAgICAgZm9yIChjaGFyIGMgOiBzKSB7CiAgICAgICAgCWlmIChjID09ICcwJykge2NudF8wICs9IDE7fQogICAgICAgIAllbHNlIHtjbnRfMSArPSAxO30KICAgICAgICAJCiAgICAgICAgCWlmIChjbnRfMSA+IGNudF8wKSB7CiAgICAgICAgCQljb3VudF9pbl9jaHVyY2ggKz0gMTsKICAgICAgICAJCWJyZWFrOwogICAgICAgIAl9CiAgICAgICAgfQogICAgICAgIAogICAgfSB3aGlsZShzdGQ6Om5leHRfcGVybXV0YXRpb24ocy5iZWdpbigpLCBzLmVuZCgpKSk7CiAgCiAgCiAgICBjb3V0IDw8ICJudW1iZXIgb2YgdGltZXMgYnJpZGUgZW50ZXJlZCBjaHVyY2g6ICIgPDwgY291bnRfaW5fY2h1cmNoIDw8ICdcbic7CiAgICBjb3V0IDw8ICJ0b3RhbCBwZXJtdXRhdGlvbnM6ICIgPDwgdG90YWxfcGVybXV0YXRpb25zIDw8ICdcbic7CiAgICBjb3V0IDw8ICJwcm9iYWJpbGl0eTogIiA8PCAxLjAgKiBjb3VudF9pbl9jaHVyY2ggLyB0b3RhbF9wZXJtdXRhdGlvbnMgPDwgJ1xuJzsKfQ==