Cod sursa(job #2408647)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 18 aprilie 2019 10:50:38
Problema Oite Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>
#define MAXN 1030

using namespace std;

ifstream f("oite.in");
ofstream g("oite.out");

int v[MAXN];
int N,G,ans;

struct trp{

    int x,y,z;
};

unordered_multimap <int,trp> HM;

void read_data(){

    f>>N>>G;
    for(int i=1;i<=N;i++)
        f>>v[i];
}

void solve(){

    trp temp;
    for(int k,j,i=1;i<=N-2;i++)
        for(j=i+1;j<=N-1;j++)
            for(k=j+1;k<=N;k++){

                temp={i,j,k};
                HM.emplace(v[i]+v[j]+v[k],temp);
            }

    unordered_multimap <int,trp> :: iterator it;

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

        auto range=HM.equal_range(G-v[i]);

        for(it=range.first;it!=range.second;++it)
            if((i-it->second.x)*(i-it->second.y)*(i-it->second.z))
                ++ans;
    }

    g<<ans/4;
}

int main(){

    read_data();
    solve();

    return 0;
}