Advertisement
omar-alhelo

100883A (CodeForces)

Sep 12th, 2018
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.34 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define ld long double
  5. #define VI vector<int>
  6. #define _pb push_back
  7. #define _all(v) v.begin(), v.end()
  8. #define II pair<int,int>
  9. #define III pair<int, II>
  10. #define F first
  11. #define S second
  12. #define _mp make_pair
  13. #define LINE  putc('\n', stdout)
  14. #define SPACE putc(' ' , stdout)
  15. #define TAB   putc('\t', stdout)
  16. #define _out(_)            printf("%i",_)
  17. #define __out(_,__)        printf("%i %i",_,__)
  18. #define ___out(_,__,___)   printf("%i %i %i",_,__,___)
  19. #define _outLL(_)          printf("%I64d",_)
  20. #define __outLL(_,__)      printf("%I64d %I64d",_,__)
  21. #define ___outLL(_,__,___) printf("%I64d %I64d %I64d",_,__,___)
  22. #define _in(_)             scanf("%i", &_)
  23. #define __in(_,__)         scanf("%i%i",&_,&__)
  24. #define ___in(_,__,___)    scanf("%i%i%i",&_,&__,&___)
  25. #define _inLL(_)           scanf("%I64d", &_)
  26. #define __inLL(_,__)       scanf("%I64d%I64d",&_,&__)
  27. #define ___inLL(_,__,___)  scanf("%I64d%I64d%I64d",&_,&__,&___)
  28. #define _debug(_) printf("-----------> Debuging : %i\n",_ );
  29. #define _for(i, n) for(int i=0 ; i<n ; i++)
  30. #define _rof(i, n) for(int i=n ; i-- ;    )
  31. #define rm_imp(d, p) (round(d*p)/p)
  32. #define INF 2e9
  33. int n, T;
  34. ld A[22][22], Tab[22][22];
  35. #define MAX_nCr 22
  36. ld C[MAX_nCr][MAX_nCr];
  37. void init_nCr(){
  38.     for(int n=0;n<=MAX_nCr;n++)  C[n][0]=C[n][n]=1;
  39.     for(int n=2;n<=MAX_nCr;n++)
  40.         for(int r=1;r<n;r++)    C[n][r]=C[n-1][r-1]+C[n-1][r];
  41. }
  42. int main()
  43. {
  44.   init_nCr();
  45.   _in(T);
  46.   for(int t=1; t<=T ; t++)
  47.   {
  48.     _in(n);
  49.     printf("Case %i: ", t);
  50.  
  51.     for(int i=0 ; i<n ; i++)
  52.       for(int j=0 ; j<n ; j++)
  53.         cin>>A[i][j], Tab[i][j]=0;
  54.  
  55.     if(n==1){
  56.       printf("%.6Lf \n",(ld)1);
  57.       continue;
  58.     }
  59.     for(int Winner=0 ; Winner<n ; Winner++)
  60.       for(int mask=1 ; mask<(1<<n) ; mask++)
  61.         if(!(mask&(1<<Winner)))
  62.         {
  63.           ld x = 1;
  64.           for(int Loser=0 ; Loser<n ; Loser++)
  65.             if(mask& (1<<Loser) ) x*=A[Winner][Loser];
  66.           Tab[Winner][__builtin_popcount(mask)] += x;
  67.         }
  68.     //char sp[2]={0}; // Only spaces between answers didn't work either
  69.     for(int i=0 ; i<n ; i++)
  70.     {
  71.       ld ans=0;
  72.       for(int j=1 ; j<=n-1 ; j++)
  73.         ans+=Tab[i][j]/C[n-1][j];
  74.       printf("%.6Lf ", ans);
  75.             //printf("%s%.6Lf\n", sp, ans), *sp=' ';
  76.     }
  77.     LINE;
  78.   }
  79.   //LINE;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement