Cod sursa(job #1998189)

Utilizator MihaelaCismaruMihaela Cismaru MihaelaCismaru Data 6 iulie 2017 21:23:08
Problema Oite Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream in("oite.in");
ofstream out("oite.out");
int n,l,st,dr,mid,k,i,j,oite[1025],csum,alfa,beta,grupuri_de_oite;
vector<int>sume1[100010],sume2[100010];
int main(){
    in >> n >> l;
    for( i = 1; i <= n; i ++ ){
        in >> oite[i];
    }
    for( i = 1; i <= n; i ++ ){
        for( j = i+1; j <= n; j ++ ){
            sume1[ (oite[i] + oite[j])%100000 ].push_back( i );
            sume2[ (oite[i] + oite[j])%100000 ].push_back( j );
        }
    }
    for( i = 1; i <= n; i ++ ){
        for( j = i+1; j <= n; j ++ ){
            csum = l - oite[i] - oite[j];
            if( sume1[csum%100000].empty() == 0 ){
                for( k = 0 ; k < sume1[csum%100000].size(); k ++ ){
                    if( sume1[ csum%100000 ][k] != i && sume1[ csum%100000 ][k] != j
                    &&  sume2[ csum%100000 ][k] != i && sume2[ csum%100000 ][k] != j
                    && oite[sume1[ csum%100000 ][k]] + oite[sume2[ csum%100000 ][k]] == csum ){
                        grupuri_de_oite++;
                    }
                }
            }
        }
    }
    out<<grupuri_de_oite/6;
    return 0;
}