Cod sursa(job #1416718)

Utilizator bogdanpaunFMI Paun Bogdan Gabriel bogdanpaun Data 8 aprilie 2015 19:58:23
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <bits/stdc++.h>
using namespace std;
#define MOD 666013

int n,l,sum,pos,sol;
int v[1100];
vector<pair<int,int> > vp[MOD+16];

int search(int x){
    for(int i=0; i < vp[pos].size(); ++i){
        if( vp[pos][i].first == sum ){
            vp[pos][i].second += x;
            return vp[pos][i].second ;
        }
    }
    return 0;
}


int main()
{
    freopen("oite.in"  ,  "r"  , stdin );
    freopen("oite.out" ,  "w"  , stdout);

    scanf("%d %d",&n,&l);
    for(int i=1;i<=n;++i)
        scanf("%d ",&v[i]);

    for(int i=1; i < n; ++i){
        for(int j= i+1; j <=n; ++j){
            sum = l - (v[i] + v[j]);
            if( sum < 0 ) continue;
            pos = sum % MOD;
            sol += search( 0 );
        }
        for(int j=i-1; j ; --j){
            sum = v[i] + v[j];
            pos = sum % MOD;
            if( search(1) ) continue;
            vp[pos].push_back( make_pair(sum , 1) );
        }
    }
    printf("%d",sol);



    return 0;
}