Pagini recente » Cod sursa (job #3276154) | Cod sursa (job #2588651) | Cod sursa (job #2335308) | Cod sursa (job #467790) | Cod sursa (job #2822172)
#include <fstream>
#include <vector>
#include <unordered_map>
using namespace std;
ifstream fin("oite.in");
ofstream fout("oite.out");
const int nmax=1024;
int v[nmax+1];
unordered_map <int, int> um;
int main(){
int n,l;
fin>>n>>l;
for(int i=1;i<=n;i++){
fin>>v[i];
}
for(int i=3;i<=n-1;i++){
for(int j=i+1;j<=n;j++){
int sv=v[i]+v[j];
if(um.find(sv)==um.end()){
um[sv]=1;
}else{
um[sv]++;
}
}
}
int sol=0;
for(int i=2;i<=n-2;i++){
for(int j=1;j<=i-1;j++){
if(l-v[i]-v[j]>=0){
if(um.find(l-v[i]-v[j])!=um.end()){
sol+=um[l-v[i]-v[j]];
}
}
}
for(int j=i+2;j<=n;j++){
int sv=v[i+1]+v[j];
if(um[sv]==1){
um.erase(sv);
}else{
um[sv]--;
}
}
}
fout<<sol<<"\n";
return 0;
}