Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2011
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.81 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <climits>
  5. #include <cfloat>
  6. #include <map>
  7. #include <utility>
  8. #include <set>
  9. #include <iostream>
  10. #include <memory>
  11. #include <string>
  12. #include <cstring>
  13. #include <vector>
  14. #include <algorithm>
  15. #include <functional>
  16. #include <sstream>
  17. #include <complex>
  18. #include <stack>
  19. #include <queue>
  20. #include <ctime>
  21. using namespace std;
  22. static const double EPS = 1e-15;
  23. typedef long long ll;
  24. typedef long long LL;
  25. typedef pair<int,int>            PI;
  26. typedef map<PI, int> MPI;
  27. typedef vector<int>     VI;
  28. typedef vector<PI>      VPI;
  29. typedef vector< vector<int> >   VII;
  30. typedef unsigned int UINT32;
  31. typedef unsigned short UINT16;
  32. typedef unsigned char UINT8;
  33. #define ALL(c) (c).begin(), (c).end()
  34. #define REP(i, n) for (int i = 0; i < (int)(n); i++)
  35. #define FOR(i, s, n) for (int i = (s); i < (int)(n); i++)
  36. #define PB(a)  push_back(a)
  37. #define MP(a,b)  make_pair(a,b)
  38. #define MEMZ(a) memset(a,0,sizeof(a))
  39. #define ITER(c) __typeof((c).begin())
  40. #define PRESENT(c, e) ((c).find((e)) != (c).end())
  41. #define CPRESENT(c, e) (find(all(c), (e)) != (c).end())
  42. #define TR(c, i) for (ITER(c) i = (c).begin(); i != (c).end(); ++i)
  43.  
  44. #define INF INT_MAX
  45.  
  46. #define MOD 1000000007
  47.  
  48. int main(void)
  49. {
  50.   int n,m,h;
  51.   int sum = 0;
  52.   int sum_h = 0;
  53.   cin>>n>>m>>h;
  54.   REP(i,m)
  55.   {
  56.     int a;
  57.     cin>>a;
  58.     sum += a;
  59.     if((i+1)==h)sum_h = a;
  60.   }
  61.  
  62.   double p = -1.0;
  63.   if(sum>=n)
  64.   {
  65.     sum -= 1;
  66.     sum_h -=1;
  67.     p = 1.0;
  68.     if((sum-sum_h) >= (n-1))
  69.     {
  70.       double d = 1.0;
  71.       for(int i = sum - sum_h + 1; i <= sum ; i++)
  72.       {
  73.         d /= i;
  74.       }
  75.       for(int i = sum - sum_h - (n-1) + 1; i <= sum - (n-1) ; i++)
  76.       {
  77.         d *= i;
  78.       }
  79.       p -= d;
  80.     }
  81.   }
  82.  
  83.   cout.precision(10);
  84.   cout<<p<<endl;
  85.   return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement