Advertisement
Guest User

Untitled

a guest
Jul 26th, 2017
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <cstdio>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <map>
  5. #include <set>
  6. #include <cmath>
  7. #include <iostream>
  8. #include <ctime>
  9. #include <utility>
  10. #include <string>
  11. #include <memory.h>
  12. using namespace std;
  13.  
  14. #define forn( i,n ) for ( int i=0; i<(int)(n); i++ )
  15. #define sz(a) (int)((a).size())
  16. #define pb push_back
  17. #define mp make_pair
  18. typedef long long ll;
  19. typedef pair<int,int> pii;
  20.  
  21. ld getf( int mask )
  22. {
  23.   if ( memf[mask] > -0.5 ) return memf[mask];
  24.  
  25.   ld& res = memf[mask];
  26.   res = 0;
  27.  
  28.   int fs = -1;
  29.   forn( i, n )
  30.     if ( mask & ( 1<<i ) )
  31.     {
  32.       if ( fs == -1 ) fs = i;
  33.       else
  34.       {
  35.         if ( bc[mask] == start-k && i == need ) return res = ( i-lp )*1.0 / n;
  36.         res += getf(
  37.       }
  38.     }
  39. }
  40.  
  41. int main()
  42. {
  43.   freopen( "c.in", "r", stdin );
  44.   freopen( "c.out", "w", stdout );
  45.  
  46.   scanf( "%d %d %d", &n, &need, &k );
  47.   k--; need--;
  48.   forn( i, n ) scanf( "%d", &x ), mask |= ( 1<<x );
  49.  
  50.   bc[0] = 1;
  51.   for ( int i=1; i<(1<<20); i++ ) bc[i] = bc[i&(i-1)] + 1;
  52.  
  53.   startbc = bc[mask];
  54.   if ( k > startbc ) printf( "0\n" );
  55.   else printf( "%.7f\n", getf( mask ) );
  56.  
  57.   return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement