Cod sursa(job #1711357)

Utilizator bogdanmarin69Bogdan Marin bogdanmarin69 Data 31 mai 2016 01:08:10
Problema Oite Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("oite.in");
ofstream cout("oite.out");
const int MOD = 666013, MAX = 1025;
int v[MAX], n, l;
vector <pair<int, long long> > has[MOD];
long long ans;
int main()
{
    cin>>n>>l;
    for(int i=1; i<=n; i++)
        cin>>v[i];
    for(int i=1; i<n; i++){
        for(int j=i+1; j<=n; j++){
            int s = l - v[i] - v[j];
            if(s>=0){
                int lin = s % MOD;
                for(unsigned it=0; it<has[lin].size(); it++)
                if(has[lin][it].first==s)
                    ans = ans + has[lin][it].second;
            }
        }
        for(int j=1; j<i; j++){
            int s = v[i] + v[j];
            int lin = s % MOD;
            int gasit = 0;
            for(unsigned it=0; it<has[lin].size(); it++)
                if(has[lin][it].first == s){
                    gasit = 1;
                    has[lin][it].second++;
                }
            if(gasit==0)
                has[lin].push_back({s, 1});
        }
    }
    cout<<ans;
    return 0;
}