Pagini recente » Cod sursa (job #1723273) | Cod sursa (job #482300) | Infoarena Monthly 2014 - Runda 1 | Cod sursa (job #1858272) | Cod sursa (job #1711355)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("oite.in");
ofstream cout("oite.out");
const int MOD = 666013, MAX = 1025;
int v[MAX], n, l;
vector <pair<int, long long> > has[MAX];
long long ans;
int main()
{
cin>>n>>l;
for(int i=1; i<=n; i++)
cin>>v[i];
for(int i=4; i<=n; i++){
for(int j=1; j<=i-3; j++)
for(int k=j+1; k<=i-2; k++){
int s = v[j] + v[k] + v[i-1];
int lin = s % MOD;
int gasit = 0;
for(unsigned it=0; it<has[lin].size(); it++)
if(has[lin][it].first == s){
gasit = 1;
has[lin][it].second++;
}
if(gasit==0)
has[lin].push_back({s, 1});
}
int s = l - v[i];
if(s>=0){
int lin = s % MOD;
for(unsigned it=0; it<has[lin].size(); it++)
if(has[lin][it].first==s)
ans = ans + has[lin][it].second;
}
}
cout<<ans;
return 0;
}