Cod sursa(job #908487)

Utilizator FayedStratulat Alexandru Fayed Data 9 martie 2013 15:14:58
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <cstdio>
#include <vector>
#define NMAX 1025
#define MOD 10007
using namespace std;

vector < int > Hash[MOD];
int V[NMAX];
int Suma_curenta;
int S,C,nr;

void citesc(){

    freopen("oite.in","r",stdin);
    freopen("oite.out","w",stdout);
    scanf("%d%d",&C,&S);
    for(register int i=1;i<=C;++i)
        scanf("%d",&V[i]);
}

inline void Add(int X){
    int key = X%MOD;
    Hash[key].push_back(X);
}

inline void Search(int X){
    int key = X%MOD;
    for(vector < int >::iterator it = Hash[key].begin();it!=Hash[key].end();++it)
        if(*it ==  X)
            nr++;
}

inline void solve(){

    for(register int i=1;i<C;++i){
        for(register int j=i+1;j<=C;++j){
            Suma_curenta = V[i]+V[j];
                if(Suma_curenta < S)
                    Search(S-Suma_curenta);
                }
      for(register int k=1;k<i;++k)
            Add(V[k]+V[i]);

    }

printf("%d",nr);
}

int main(){

    citesc();
    solve();

return 0;
}