Cod sursa(job #2571024)

Utilizator betybety bety bety Data 4 martie 2020 20:31:19
Problema Oite Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>

#include <map>

using namespace std;

ifstream cin("oite.in");

ofstream cout("oite.out");

const int lim=1024+3;

int v[lim];

map<int,int> m,f;

int main()

{

    int n,l,rasp=0;

    cin>>n>>l;

    for(int i=1;i<=n;++i)

        cin>>v[i],f[v[i]]++;

    for(int i=1;i<=n-1;++i)

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

    if(v[i]+v[j]<=l){

        m[v[i]+v[j]]++;

        if(2*(v[i]+v[j])!=l)

        rasp+=m[l-v[i]-v[j]],rasp%=1000007;

    }

    if(l%2==0) rasp+=((m[l/2]*(m[l/2]-1))/2)%1000007,rasp%=1000007;

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

        rasp-=m[l-2*v[i]],rasp=(rasp+1000007+1000007)%1000007;

        if(l/2>=v[i] and l%2==0)

            rasp-=f[l/2-v[i]],rasp=(rasp+1000007+1000007)%1000007;

    }

    cout<<rasp;

    return 0;

}