#include #include using namespace std ; const int MAXN = 512 ; double prob[2][2][MAXN][MAXN] ; int main() { int N, K, ti ; cin >> N >> K ; vector sums ; for (int m=0; m= K && c && b==0) { // solve m here sum += w * f ; } else { // did not solve; forward propogate int na = a ; int nb = b ; if (r >= K && b) { // solve one nb-- ; na++ ; } if (r >= N) { prob[r1][c][na][nb] = f ; } else { double eq = (1-c) / (double)(N - r) ; double lt = (m-a-b) / (double)(N - r) ; double gt = (N-r-(1-c)-(m-a-b)) / (double)(N-r) ; prob[r1][1][na][nb] += eq * f ; prob[r1][c][na][nb+1] += lt * f ; prob[r1][c][na][nb] += gt * f ; } } } } sums.push_back(sum) ; } vector v(N) ; for (int i=0; i> v[i] ; sort(v.begin(), v.end()) ; double osum = 0 ; for (int i=0; i