Cod sursa(job #1343392)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 15 februarie 2015 14:10:47
Problema Oite Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#define nmax 1005
#define mil 1000005
using namespace std;
ifstream f("oite.in");
ofstream g("oite.out");
long long sol,x;
int n,s,s1,sol1;
int v[nmax];
int t[mil*2],c[mil];

int main()
{
    int i,j;
    f>>n>>s;
    if (n<4) {
        g<<0;
        return 0;
    }

    for (i=1;i<=n;i++) {
        f>>x;
        if (x<=s) {
            v[i]=x;
        } else {
            n--;
            i--;
        }
    }
    for (i=1;i<=n;i++)
        c[v[i]]++;

    for (i=1;i<=n;i++)
        for (j=i+1;j<=n;j++)
            t[v[i]+v[j]]++;


    for (i=1;i<=n;i++)
        for (j=i+1;j<=n;j++) {
            c[v[i]]--;
            c[v[j]]--;

            s1=s-v[i]-v[j];
            sol1=t[s1];

            if (v[i]+v[j]==s1)
                    sol1--;
            sol1-=c[s1-v[i]];
            sol1-=c[s1-v[j]];

            sol+=1LL*sol1;


            c[v[i]]++;
            c[v[j]]++;

        }
    g<<sol/6;

    return 0;
}