Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <cstdlib>
- #include <cmath>
- #include <climits>
- #include <cfloat>
- #include <map>
- #include <utility>
- #include <set>
- #include <iostream>
- #include <memory>
- #include <string>
- #include <cstring>
- #include <vector>
- #include <algorithm>
- #include <functional>
- #include <sstream>
- #include <complex>
- #include <stack>
- #include <queue>
- #include <ctime>
- using namespace std;
- static const double EPS = 1e-15;
- typedef long long ll;
- typedef long long LL;
- typedef pair<int,int> PI;
- typedef map<PI, int> MPI;
- typedef vector<int> VI;
- typedef vector<PI> VPI;
- typedef vector< vector<int> > VII;
- typedef unsigned int UINT32;
- typedef unsigned short UINT16;
- typedef unsigned char UINT8;
- #define ALL(c) (c).begin(), (c).end()
- #define REP(i, n) for (int i = 0; i < (int)(n); i++)
- #define FOR(i, s, n) for (int i = (s); i < (int)(n); i++)
- #define PB(a) push_back(a)
- #define MP(a,b) make_pair(a,b)
- #define MEMZ(a) memset(a,0,sizeof(a))
- #define ITER(c) __typeof((c).begin())
- #define PRESENT(c, e) ((c).find((e)) != (c).end())
- #define CPRESENT(c, e) (find(all(c), (e)) != (c).end())
- #define TR(c, i) for (ITER(c) i = (c).begin(); i != (c).end(); ++i)
- #define INF INT_MAX
- #define MOD 1000000007
- int main(void)
- {
- int n,m,h;
- int sum = 0;
- int sum_h = 0;
- cin>>n>>m>>h;
- REP(i,m)
- {
- int a;
- cin>>a;
- sum += a;
- if((i+1)==h)sum_h = a;
- }
- double p = -1.0;
- if(sum>=n)
- {
- sum -= 1;
- sum_h -=1;
- p = 1.0;
- if((sum-sum_h) >= (n-1))
- {
- double d = 1.0;
- for(int i = sum - sum_h + 1; i <= sum ; i++)
- {
- d /= i;
- }
- for(int i = sum - sum_h - (n-1) + 1; i <= sum - (n-1) ; i++)
- {
- d *= i;
- }
- p -= d;
- }
- }
- cout.precision(10);
- cout<<p<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement