Cod sursa(job #1344088)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 16 februarie 2015 12:43:19
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <algorithm>
#include <vector>
#define nmax 1005
#define mod 66613
using namespace std;
ifstream f("oite.in");
ofstream g("oite.out");
long long sol;
int n,s,s1,v[nmax],x,y;
vector < pair < int , int > > a[mod+5];

vector < pair < int , int > > ::iterator it;

int main()
{
    int i,j;
    f>>n>>s;
    for (i=1;i<=n;i++)
        f>>v[i];
    sort(v+1,v+n+1);


    for (i=1;i<=n;i++)
        for (j=i+1;j<=n;j++)
            if (v[i]+v[j]<=s)
                a[(v[i]+v[j])%mod].push_back(make_pair(i,j));


    for (i=1;i<=n;i++)
        for (j=i+1;j<=n;j++) {

             s1=s-v[i]-v[j];
             if (s1>=0) {
                it=a[s1%mod].begin();
                for (;it!=a[s1%mod].end();it++) {
                        x=it->first;
                        y=it->second;
                        if (x!=i&&x!=j&&y!=i&&y!=j&&v[i]+v[j]+v[x]+v[y]==s)
                            sol++;
                }
             }


        }
    g<<sol/6;

    return 0;
}