Cod sursa(job #2396075)

Utilizator dobrandreiAndrei Dobra dobrandrei Data 3 aprilie 2019 10:50:01
Problema Oite Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#include <vector>
#define key val%10000
using namespace std;
FILE *in,*out;

int c,l;
int a[1026];

vector <pair<int,int>> v[100000];

void read(){
    fscanf(in,"%d %d",&c,&l);
    for(int i=1;i<=c;i++)
        fscanf(in,"%d",&a[i]);
}

int find(int val){
    for(auto y:v[key]){
        if(y.first==val)
            return y.second;
    }
}

void add(int val){
    for(auto y:v[key]){
        if(y.first==val){
            y.second++;
            return;
        }
    }
    v[key].push_back({val,1});
}

void solve(){
    int sol=0;
    for(int i=2;i<c;i++){
        for(int j=i+1;j<=c;j++)
            sol+=find(l-a[i]-a[j]);
        for(int j=i-1;j>=1;j--)
            add(a[i]+a[j]);
    }
    fprintf(out,"%d",sol);
}
int main(){
    in=fopen("oite.in","r");
    out=fopen("oite.out","w");
    read();
    solve();
    return 0;
}