Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <vector>
- #include <algorithm>
- #include <map>
- #include <set>
- #include <cmath>
- #include <iostream>
- #include <ctime>
- #include <utility>
- #include <string>
- #include <memory.h>
- using namespace std;
- #define forn( i,n ) for ( int i=0; i<(int)(n); i++ )
- #define sz(a) (int)((a).size())
- #define pb push_back
- #define mp make_pair
- typedef long long ll;
- typedef pair<int,int> pii;
- ld getf( int mask )
- {
- if ( memf[mask] > -0.5 ) return memf[mask];
- ld& res = memf[mask];
- res = 0;
- int fs = -1;
- forn( i, n )
- if ( mask & ( 1<<i ) )
- {
- if ( fs == -1 ) fs = i;
- else
- {
- if ( bc[mask] == start-k && i == need ) return res = ( i-lp )*1.0 / n;
- res += getf(
- }
- }
- }
- int main()
- {
- freopen( "c.in", "r", stdin );
- freopen( "c.out", "w", stdout );
- scanf( "%d %d %d", &n, &need, &k );
- k--; need--;
- forn( i, n ) scanf( "%d", &x ), mask |= ( 1<<x );
- bc[0] = 1;
- for ( int i=1; i<(1<<20); i++ ) bc[i] = bc[i&(i-1)] + 1;
- startbc = bc[mask];
- if ( k > startbc ) printf( "0\n" );
- else printf( "%.7f\n", getf( mask ) );
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement