Pagini recente » Cod sursa (job #823827) | Cod sursa (job #1097623) | Cod sursa (job #3357345) | Cod sursa (job #1801661) | Cod sursa (job #3310545)
//varianta I 100p cu cautare binara O(n^2*log(n))
#include <fstream>
#include<algorithm>
using namespace std;
ifstream f("nrtri.in");
ofstream g("nrtri.out");
int x,i,j,k,n,t,nrsol,s,p,a[1000];
int cauta_bin(int x)//returneaza pozitia primului element
{ //mai mare ca x !!!!!!!!
int st,dr,mij;
st=1;dr=n;
while(st<=dr){
mij=(st+dr)/2;
if(x>=a[mij])st=mij+1;
else dr=mij-1;
}
return st;
}
int main()
{
f>>n;
for(i=1;i<=n;i++)f>>a[i];
sort(a+1,a+n+1);
for(i=1;i<=n-2;i++)
for(j=i+1;j<=n-1;j++){
s=a[i]+a[j];
p=cauta_bin(s);
nrsol+=p-j-1;//p-j-1 este numarul de solutii
} //pentru perechea a[i] si a[j]
g<<nrsol<<'\n';
g.close();
return 0;
}