Pagini recente » Istoria paginii utilizator/cojocaruvicentiu | Cod sursa (job #344569) | Cod sursa (job #385925) | Cod sursa (job #1645784) | Cod sursa (job #1940151)
#include <cstdio>
#include <vector>
#define MOD 997846
using namespace std;
vector <pair <int,int> > l[1000000];
int v[1025];
int main()
{
FILE *fin=fopen ("oite.in","r");
FILE *fout=fopen ("oite.out","w");
int i,j,k,n,s,sum,sol=0;
fscanf (fin,"%d%d",&n,&s);
for (i=1;i<=n;i++)
fscanf (fin,"%d",&v[i]);
l[(v[1]+v[2])%MOD].push_back (make_pair (v[1]+v[2],1));
for (i=3;i<n;i++){
for (j=i+1;j<=n;j++){
//if (i==7 && j==8)
// printf ("a");
sum=(s-v[i]-v[j])%MOD;
if (sum<0)
continue;
for (k=0;k<l[sum].size();k++)
if (l[sum][k].first==s-v[i]-v[j]){
sol+=l[sum][k].second;
break;
}
}
for (j=i-1;j>0;j--){
sum=(v[i]+v[j])%MOD;
for (k=0;k<l[sum].size();k++)
if (l[sum][k].first==v[i]+v[j]){
l[sum][k].second++;
break;
}
if (k<l[sum].size() || l[sum].size()==0)
l[sum].push_back (make_pair (v[i]+v[j],1) );
}
}
fprintf (fout,"%d",sol);
return 0;
}