Language: C++

#include <iostream>
#include <vector>
#include <iterator>
#include <cmath>
#include <algorithm>

int N, A, B, C;
std::vector<int> l;

int dfs(int n, int a, int b, int c){//引数::探索の深さ、竹Aの長さ、竹Bの長さ、竹Cの長さ。
  if(n == N)}	//最深部における処理
    if(std::min( {a, b, c} ) > 0){//A,B,Cを作るのに少なくとも一つの竹を使う必要がある。
      return std::fabs(a - A) + std::fabs(b - B) + std::fabs(c - C) - 30;
      //30引くのは最初に竹を選ぶという行為にMPを消費しないため。a-Aなどは延長/短縮に使うMP。
    }else{
      return 100000;
    }
  }

  int mp1 = dfs(n + 1, a, b, c);			//深さkに対してk番目の竹を選ばない。
  int mp2 = dfs(n + 1, a + l[n], b, c) + 10;//竹Aを作るのにk番目の竹を使う。
  int mp3 = dfs(n + 1, a, b + l[n] ,c) + 10;//竹Bを作るのにk番目の竹を使う。
  int mp4 = dfs(n + 1, a, b, c + l[n]) + 10;//竹Cを作るのにk番目の竹を使う。
  return std::min( {mp1, mp2, mp3, mp4} );	//深さ0での比較
}

int main(){
  std::cin >> N >> A >> B >> C;
  std::copy_n(std::istream_iterator<int>(std::cin), N, std::back_inserter(l));
  std::cout << dfs(0, 0, 0, 0) << std::endl;
  return 0;
}


Compiler output:
a.cc: In function 'int dfs(int, int, int, int)':
a.cc:11:13: error: expected primary-expression before '}' token
   11 |   if(n == N)}   //最深部における処理
      |             ^
a.cc:11:13: warning: no return statement in function returning non-void [-Wreturn-type]
a.cc: At global scope:
a.cc:12:5: error: expected unqualified-id before 'if'
   12 |     if(std::min( {a, b, c} ) > 0){//A,B,Cを作るのに少なくとも一つの竹を使う必要がある。
      |     ^~
a.cc:12:28: error: expected unqualified-id before ')' token
   12 |     if(std::min( {a, b, c} ) > 0){//A,B,Cを作るのに少なくとも一つの竹を使う必要がある。
      |                            ^
a.cc:15:6: error: expected unqualified-id before 'else'
   15 |     }else{
      |      ^~~~
a.cc:18:3: error: expected declaration before '}' token
   18 |   }
      |   ^
a.cc:20:17: error: 'n' was not declared in this scope
   20 |   int mp1 = dfs(n + 1, a, b, c);                        //深さkに対してk番目の竹を選ばない。
      |                 ^
a.cc:20:24: error: 'a' was not declared in this scope
   20 |   int mp1 = dfs(n + 1, a, b, c);                        //深さkに対してk番目の竹を選ばない。
      |                        ^
a.cc:20:27: error: 'b' was not declared in this scope
   20 |   int mp1 = dfs(n + 1, a, b, c);                        //深さkに対してk番目の竹を選ばない。
      |                           ^
a.cc:20:30: error: 'c' was not declared in this scope
   20 |   int mp1 = dfs(n + 1, a, b, c);                        //深さkに対してk番目の竹を選ばない。
      |                              ^
a.cc:21:17: error: 'n' was not declared in this scope
   21 |   int mp2 = dfs(n + 1, a + l[n], b, c) + 10;//竹Aを作るのにk番目の竹を使う。
      |                 ^
a.cc:21:24: error: 'a' was not declared in this scope
   21 |   int mp2 = dfs(n + 1, a + l[n], b, c) + 10;//竹Aを作るのにk番目の竹を使う。
      |                        ^
a.cc:21:30: error: 'n' was not declared in this scope
   21 |   int mp2 = dfs(n + 1, a + l[n], b, c) + 10;//竹Aを作るのにk番目の竹を使う。
      |                              ^
a.cc:21:34: error: 'b' was not declared in this scope
   21 |   int mp2 = dfs(n + 1, a + l[n], b, c) + 10;//竹Aを作るのにk番目の竹を使う。
      |                                  ^
a.cc:21:37: error: 'c' was not declared in this scope
   21 |   int mp2 = dfs(n + 1, a + l[n], b, c) + 10;//竹Aを作るのにk番目の竹を使う。
      |                                     ^
a.cc:22:17: error: 'n' was not declared in this scope
   22 |   int mp3 = dfs(n + 1, a, b + l[n] ,c) + 10;//竹Bを作るのにk番目の竹を使う。
      |                 ^
a.cc:22:24: error: 'a' was not declared in this scope
   22 |   int mp3 = dfs(n + 1, a, b + l[n] ,c) + 10;//竹Bを作るのにk番目の竹を使う。
      |                        ^
a.cc:22:27: error: 'b' was not declared in this scope
   22 |   int mp3 = dfs(n + 1, a, b + l[n] ,c) + 10;//竹Bを作るのにk番目の竹を使う。
      |                           ^
a.cc:22:33: error: 'n' was not declared in this scope
   22 |   int mp3 = dfs(n + 1, a, b + l[n] ,c) + 10;//竹Bを作るのにk番目の竹を使う。
      |                                 ^
a.cc:22:37: error: 'c' was not declared in this scope
   22 |   int mp3 = dfs(n + 1, a, b + l[n] ,c) + 10;//竹Bを作るのにk番目の竹を使う。
      |                                     ^
a.cc:23:17: error: 'n' was not declared in this scope
   23 |   int mp4 = dfs(n + 1, a, b, c + l[n]) + 10;//竹Cを作るのにk番目の竹を使う。
      |                 ^
a.cc:23:24: error: 'a' was not declared in this scope
   23 |   int mp4 = dfs(n + 1, a, b, c + l[n]) + 10;//竹Cを作るのにk番目の竹を使う。
      |                        ^
a.cc:23:27: error: 'b' was not declared in this scope
   23 |   int mp4 = dfs(n + 1, a, b, c + l[n]) + 10;//竹Cを作るのにk番目の竹を使う。
      |                           ^
a.cc:23:30: error: 'c' was not declared in this scope
   23 |   int mp4 = dfs(n + 1, a, b, c + l[n]) + 10;//竹Cを作るのにk番目の竹を使う。
      |                              ^
a.cc:23:36: error: 'n' was not declared in this scope
   23 |   int mp4 = dfs(n + 1, a, b, c + l[n]) + 10;//竹Cを作るのにk番目の竹を使う。
      |                                    ^
a.cc:24:3: error: expected unqualified-id before 'return'
   24 |   return std::min( {mp1, mp2, mp3, mp4} );      //深さ0での比較
      |   ^~~~~~
a.cc:24:41: error: expected unqualified-id before ')' token
   24 |   return std::min( {mp1, mp2, mp3, mp4} );      //深さ0での比較
      |                                         ^
a.cc:25:1: error: expected declaration before '}' token
   25 | }
      | ^