#include #include #include #include #include #include #include #include #include #include #include using namespace std; class XorShift{ public: uint32_t x; uint32_t y; uint32_t z; uint32_t w; XorShift(){ x = 123456789; y = 362436069; z = 521288629; w = 88675123; } XorShift(uint32_t seed){ x = 123456789; y = 362436069; z = 521288629; w = seed; for(int i=0; i> 19)) ^ (t ^ (t >> 8)); } }; XorShift x_rand; bool win(vector& a, vector& b, int p_a, int p_b, int diff, int rem){ if(rem == 0){ return diff>0; } int ca,cb; if(x_rand.xor128()%1000000 < p_a || rem==1){ ca = a.front(); a.erase(a.begin()); }else{ int index = x_rand.xor128()%(rem-1); ca = a[1+index]; a.erase(a.begin()+1+index); } if(x_rand.xor128()%1000000 < p_b || rem==1){ cb = b.front(); b.erase(b.begin()); }else{ int index = x_rand.xor128()%(rem-1); cb = b[1+index]; b.erase(b.begin()+1+index); } if(ca>cb){ diff += ca+cb; }else{ diff -= ca+cb; } return win(a,b, p_a,p_b, diff, rem-1); } int main(){ x_rand = XorShift((unsigned)time(NULL)); int n; double pa,pb; cin >> n >> pa >> pb; vector a(n),b(n); for(int i=0; i> a[i]; } sort(a.begin(), a.end()); for(int i=0; i> b[i]; } sort(b.begin(), b.end()); long long cnt = 0; int k = 200000; for(int i=0; i