Cod sursa(job #1776455)

Utilizator danstefanDamian Dan Stefan danstefan Data 11 octombrie 2016 12:40:20
Problema Oite Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>
#define MOD 666013
using namespace std;
int n,s,i,v[1030],sol,j,k;
vector<int>hs[MOD+10];
vector <int>:: iterator it;
int main()
{
    freopen("oite.in","r",stdin);
    freopen("oite.out","w",stdout);
    scanf("%d%d",&n,&s);
    for(i=1; i<=n; ++i)
        scanf("%d",&v[i]);
    for(i=1; i<=n; ++i)
    {
        for(j=i+1; j<=n; ++j)
            if(s-v[i]-v[j]>=0)
                if(hs[(s-v[i]-v[j])%MOD].size()!=0)
            ///        for(k=0; k<hs[(s-v[i]-v[j])%MOD].size(); ++k)
              ///          if(hs[(s-v[i]-v[j])%MOD][k]==s-v[i]-v[j])++sol;
              for(it=hs[(s-v[i]-v[j])%MOD].begin();it<hs[(s-v[i]-v[j])%MOD].end();++it)
                if(*it==s-v[i]-v[j])++sol;
        for(j=1; j<i; ++j)
            hs[(v[i]+v[j])%MOD].push_back(v[i]+v[j]);
    }
    printf("%d\n",sol);
    return 0;
}