Cod sursa(job #2408676)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 18 aprilie 2019 11:08:19
Problema Oite Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>
#define MAXN 1030
#define DIM 70000

using namespace std;

char buffer[DIM];
int cursor=DIM-1;

void read(int &x){

    x=0;
    while(!isdigit(buffer[cursor]))
        if(++cursor==DIM){

            cursor=0;
            fread(buffer,1,DIM,stdin);
        }
    while(isdigit(buffer[cursor])){

        x=x*10+buffer[cursor]-'0';
        if(++cursor==DIM){

            cursor=0;
            fread(buffer,1,DIM,stdin);
        }
    }
}

int v[MAXN];
unordered_map <int,int> HM;
int N,G,ans;

void read_data(){

    freopen("oite.in","r",stdin);
    freopen("oite.out","w",stdout);
    read(N);
    read(G);
    for(int i=1;i<=N;i++)
        read(v[i]);
}

void solve(){

    for(int j,i=1;i<=N;i++){

        for(j=i+1;j<=N;j++)
            if(v[i]+v[j]<=G)
                ans+=HM[G-v[i]-v[j]];
        for(j=i-1;j;j--)
            if(v[i]+v[j]<=G)
                ++HM[v[i]+v[j]];
    }
    printf("%d",ans);
}

int main(){

    read_data();
    solve();

    return 0;
}