Cod sursa(job #1943208)

Utilizator Liviu_Ionut_MoantaMoanta Ionut Liviu Liviu_Ionut_Moanta Data 28 martie 2017 13:54:07
Problema Oite Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<fstream>
#include<vector>
#define aux 999999
using namespace std;
ifstream fin("oite.in");
ofstream fout("oite.out");
int c,l,i,j,q,t,e,ok,x,x1,sol;
int v[1027];
vector<pair<int,int> >d[aux];
int main(){
    fin>>c>>l;
    for(i=1;i<=c;i++){
        fin>>v[i];
    }
    q=v[1]+v[2];
    d[q%aux].push_back(make_pair(q,1));
    for(i=3;i<c;i++){
        for(j=i+1;j<=c;j++){
            x=l-v[i]-v[j];
            e=x%aux;
            x1=d[e].size();
            for(t=0;t<x1;t++){
                if(d[e][t].first+v[i]+v[j]==l){
                    sol+=d[e][t].second;
                    break;
                }
            }
        }
        for(j=i-1;j>=1;j--){
            x=v[i]+v[j];
            e=x%aux;
            x1=d[e].size();
            ok=0;
            for(t=0;t<x1;t++){
                if(d[e][t].first==x){
                    d[e][t].second++;
                    ok=1;
                    break;
                }
            }
            if(ok==0){
                d[e].push_back(make_pair(x,1));
            }
        }
    }
    fout<<sol;
    return 0;
}