Cod sursa(job #1209953)

Utilizator DjokValeriu Motroi Djok Data 18 iulie 2014 21:52:12
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<fstream>
#include<algorithm>
#define MOD 666013
using namespace std;

typedef struct lnod {
     int info,nr;
     lnod *next;   
}*nod;

int i,j,n,s,a[1050],rs=0;
nod h[666015];

void add(int x,nod &y) {
   nod p=new lnod;
   p->info=x;
   p->nr=1;
   p->next=y;
   y=p;   
}

void adaug(int x) {
   for(nod p=h[x%MOD];p;p=p->next)
   if(p->info==x) { ++p->nr; return; }
   add(x,h[x%MOD]);
}

int search(int x) {
   for(nod p=h[x%MOD];p;p=p->next)
   if(p->info==x) return p->nr;
 return 0;   
}

int main()
{
  ifstream cin("oite.in");
  ofstream cout("oite.out");  
  
  cin>>n>>s;
  for(i=1;i<=n;++i) cin>>a[i];
  
  for(i=1;i<n;++i)
  {
    for(j=i+1;j<=n;++j)
    if(s-a[i]-a[j]>=0) rs+=search(s-a[i]-a[j]);
    for(j=1;j<i;++j) adaug(a[i]+a[j]);
  }
    
  cout<<rs<<'\n';  
    
 return 0;   
}