Cod sursa(job #1711355)

Utilizator bogdanmarin69Bogdan Marin bogdanmarin69 Data 31 mai 2016 00:59:57
Problema Oite Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 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[MAX];
long long ans;
int main()
{
    cin>>n>>l;
    for(int i=1; i<=n; i++)
        cin>>v[i];
    for(int i=4; i<=n; i++){
        for(int j=1; j<=i-3; j++)
            for(int k=j+1; k<=i-2; k++){
                int s = v[j] + v[k] + v[i-1];
                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});
            }
        int s = l - v[i];
        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;
        }
    }
    cout<<ans;
    return 0;
}