Pagini recente » Cod sursa (job #1147603) | Cod sursa (job #1148353) | Cod sursa (job #2934559) | Cod sursa (job #2108057) | Cod sursa (job #2217159)
#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
int n, l;
map <pair<int,int>, int > M[2];
bool u;
int main(){
ifstream cin ("oite.in");
ofstream cout ("oite.out");
cin >> n >> l;
M[1][{0, 0}] = 1;
for (int i=1, x; i<=n; i++, u = !u){
cin >> x;
for (auto it: M[!u]) M[u][{it.fi.fi, it.fi.se}] = it.se;
for (auto it: M[!u]){
if (it.fi.se > 3 || !it.se || it.fi.fi + x > l) continue;
//cout << it.fi.fi << " " << it.fi.se << " " << it.se << "\n";
M[u][{it.fi.fi + x, it.fi.se + 1}] = M[!u][{it.fi.fi + x, it.fi.se + 1}] + it.se;
}
//for (auto it: M[u]) cout << it.fi.fi << " " << it.fi.se << " " << it.se << "\n";
//cout << "\n";
}
cout << M[!u][{l, 4}];
return 0;
}