Language: C++

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define rep(i, n) for (int i = 0; i < n; i++)
#define big 1000000007

vector<int> to[200005]; //木の構造
//double memo[200005][200005];//この様に2次元配列を外に置くと危ない
//int done[200005][200005];
vector<vector<int>　> done(3000, vector<int>(3000));
vector<vector<double　>> memo(3000, vector<double>(3000));
int n;
double dp(int u, int nq, vector<double> data) //裏の数とそのカードが何番目かの情報が欲しい
{
    if (done[u][nq] == 1)
    {
        return memo[u][nq];
    }
    if (nq == n) //これは最後オーバーしている。
    {
        return 1;
    }
    if (u = -0)
    {

        //
        /*double res = 1;
        for (int i = nq; i < n; i++)
        {
            res *= data[i];
        }
        done[u][nq] = 1;
        memo[u][nq] = res;
        */
        return 0;
    }
    double res1 = 0;
    double res2 = 0;
    double res;
    res1 = (1 - data[nq]) * dp(u - 1, nq + 1, data);
    res2 = data[nq] * dp(u, nq + 1, data);
    res = res1 + res2;
    done[u][nq] = 1;
    memo[u][nq] = res;
    return res;
}
int main()
{
    cin >> n;
    vector<double> data(n);
    rep(i, n)
    {
        cin >> data[i];
    }
    //例としてn=9の時、許される裏の数は1,2,3,4の4通り
    double count = 0;
    count = dp(n / 2, 0, data); //裏の枚数がn/2以下の確率
    cout << 1 - count << endl;
}

Compiler output:
a.cc:10:19: error: extended character 　 is not valid in an identifier
   10 | vector<vector<int>　> done(3000, vector<int>(3000));
      |                   ^
a.cc:11:15: error: extended character 　 is not valid in an identifier
   11 | vector<vector<double　>> memo(3000, vector<double>(3000));
      |               ^
a.cc:10:21: error: template argument 1 is invalid
   10 | vector<vector<int>　> done(3000, vector<int>(3000));
      |                     ^
a.cc:10:21: error: template argument 2 is invalid
a.cc:10:51: error: expression list treated as compound expression in initializer [-fpermissive]
   10 | vector<vector<int>　> done(3000, vector<int>(3000));
      |                                                   ^
a.cc:10:34: error: cannot convert 'std::vector<int>' to 'int' in initialization
   10 | vector<vector<int>　> done(3000, vector<int>(3000));
      |                                  ^~~~~~~~~~~~~~~~~
      |                                  |
      |                                  std::vector<int>
a.cc:11:15: error: 'double\U00003000' was not declared in this scope; did you mean 'double_t'?
   11 | vector<vector<double　>> memo(3000, vector<double>(3000));
      |               ^~~~~~~~
      |               double_t
a.cc:11:15: error: template argument 1 is invalid
a.cc:11:15: error: template argument 2 is invalid
a.cc:11:23: error: template argument 1 is invalid
   11 | vector<vector<double　>> memo(3000, vector<double>(3000));
      |                       ^~
a.cc:11:23: error: template argument 2 is invalid
a.cc:11:57: error: expression list treated as compound expression in initializer [-fpermissive]
   11 | vector<vector<double　>> memo(3000, vector<double>(3000));
      |                                                         ^
a.cc:11:37: error: cannot convert 'std::vector<double>' to 'int' in initialization
   11 | vector<vector<double　>> memo(3000, vector<double>(3000));
      |                                     ^~~~~~~~~~~~~~~~~~~~
      |                                     |
      |                                     std::vector<double>
a.cc: In function 'double dp(int, int, std::vector<double>)':
a.cc:15:13: error: invalid types 'int[int]' for array subscript
   15 |     if (done[u][nq] == 1)
      |             ^
a.cc:17:20: error: invalid types 'int[int]' for array subscript
   17 |         return memo[u][nq];
      |                    ^
a.cc:43:9: error: invalid types 'int[int]' for array subscript
   43 |     done[u][nq] = 1;
      |         ^
a.cc:44:9: error: invalid types 'int[int]' for array subscript
   44 |     memo[u][nq] = res;
      |         ^