Cod sursa(job #1456668)
Utilizator | Rares I Rares09 | Data | 1 iulie 2015 16:43:56 |
---|---|---|---|
Problema | Numarare triunghiuri | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.67 kb |
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("nrtri.in");
ofstream g("nrtri.out");
int a[850],n,cnt;
inline int Caut(int x){
int st=1,dr=n,m,poz=0;
while(st<=dr)
{
m=(st+dr)/2;
if(a[m]<=x)
{
poz=m;
st=m+1;
}
else
{
dr=m-1;
}
}
return poz;
}
int main()
{
int sol=0,k;
f>>n;
for(int i=1;i<=n;i++)
f>>a[i];
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
{
k=Caut(a[i]+a[j]);
sol+=k-j;
}
g<<sol;
return 0;
}