Cod sursa(job #1509435)

Utilizator GinguIonutGinguIonut GinguIonut Data 23 octombrie 2015 21:02:38
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <vector>
#define nMax 1100
#define MOD 10000
using namespace std;
ifstream fin("oite.in");
ofstream fout("oite.out");
int val[nMax], i, j, sum, s, n;
long long sol;
vector<int> G[MOD];
int find_value(int val)
{
    int bck=0;
    int list=val%MOD;
    for(vector<int>::iterator it=G[list].begin();it!=G[list].end();it++)
        if(*it==val)
            bck++;
    return bck;
}
void add_value(long long val)
{
    int list=val%MOD;
    G[list].push_back(val);
}
int main()
{
    fin>>n>>s;
    for(i=1;i<=n;i++)
        fin>>val[i];
    for(i=1;i<=n;i++)
    {
        for(j=i+1;j<=n;j++)
        {
            sum=s-val[i]-val[j];
            if(sum<0)
                continue;
            sol+=find_value(sum);
        }
        for(j=1;j<i;j++)
            add_value(val[i]+val[j]);
    }
    fout<<sol;
    return 0;
}