func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MAXN = 20;   const int X = 1 << MAXN;   int N, M, K;   long long a[MAXN];   long long p[MAXN][MAXN];   long long dp[MAXN][X + 5];   long long max(long long a, long long b) { return a > b ? a : b; }   int main() {     scanf( %d %d %d , &N, &M, &K);     for (int i = 1; i <= N; i++) scanf( %I64d , &a[i]);     int u, v;     long long w;     for (int i = 0; i < K; i++) {       scanf( %d %d %I64d , &u, &v, &w);       p[u][v] = w;     }     for (int i = 1; i <= N; i++) dp[i][1 << i - 1] = a[i];     long long ans = 0;     int cnt;     for (int i = 0; i < (1 << N); i++) {       cnt = 0;       for (int j = 1; j <= N; j++) {         if (i & (1 << j - 1)) {           cnt++;           for (int k = 1; k <= N; k++)             if (!(i & (1 << k - 1)))               dp[k][i | (1 << k - 1)] =                   max(dp[k][i | (1 << k - 1)], dp[j][i] + a[k] + p[j][k]);         }       }       if (cnt == M) {         for (int j = 1; j <= N; j++)           if (i & (1 << j - 1)) ans = max(ans, dp[j][i]);       }     }     printf( %I64d , ans);   }   