Cod sursa(job #2774731)

Utilizator ValiAntonieAntonie Valentin ValiAntonie Data 12 septembrie 2021 16:38:58
Problema Medie Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("medie.in");
ofstream fout("medie.out");

int n,i,suma,x,st,dr,mij,nr,j,indice1,indice2;
vector <int> v;

int main()
{
fin>>n;
for(i=0;i<n;i++){
    fin>>x;
    v.push_back(x);
}
sort(v.begin(),v.end());
for(i=0;i<n;i++){
    for(j=i+1;j<n;j++){
        suma = v[i] + v[j];
        st = 1;
        dr = n - 1;
        while(st <= dr){
            mij = (st + dr) / 2;
            if(2 * v[mij] == suma){
                if(mij != i && mij != j)
                nr++;
                break;
            }
            else if(2 * v[mij] > suma)
                dr = mij - 1;
            else
                st = mij + 1;
        }
        indice1 = mij + 1;
        indice2 = mij - 1;
        while(2 * v[indice1] == suma){
            if(indice1 != i && indice1 != j)
            nr++;
            indice1++;
        }
        while(2 * v[indice2] == suma){
            if(indice2 != i && indice2 != j)
            nr++;
            indice2--;
        }
    }
}
fout << nr;
    return 0;
}