Cod sursa(job #2396194)

Utilizator albucristianAlbu Cristian-Gabriel albucristian Data 3 aprilie 2019 11:55:20
Problema Oite Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
#include <vector>
using namespace std;
FILE *in,*out;
const int mod=1e5;
int c,l;
int a[1026];
vector <pair<int,int>> v[mod];
void read(){
    fscanf(in,"%d %d",&c,&l);
    for(int i=1;i<=c;i++)
        fscanf(in,"%d",&a[i]);
}
void add(int val){
    for(auto &y:v[val%mod]){
        if(y.first==val){
            y.second++;
            return;
        }
    }
    v[val%mod].push_back({val,1});
}
int find(int val){
    for(auto y:v[val%mod]){
        if(y.first==val)
            return y.second;
    }
    return 0;
}
void solve(){
    int sol=0;
    for(int i=2;i<c;i++){
        for(int j=i+1;j<=c;j++)
          if(a[i]+a[j]<=l)
            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;
}