Cod sursa(job #644735)
| Utilizator | Data | 7 decembrie 2011 17:31:03 | |
|---|---|---|---|
| Problema | Numarare triunghiuri | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.57 kb |
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("nrtri.in");
ofstream out("nrtri.out");
int v[801],n;
int caut(int x)
{
int i,pas=1<<9;
for(i=0;pas!=0;pas/=2)
if(i+pas<=n && v[i+pas]<=x)
i += pas;
return i;
}
int main()
{
int i,nr=0,j,k;
in>>n;
for(i=1;i<=n;i++)
in>>v[i];
sort(&v[1], &v[n+1]);
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
{
k=caut(v[i]+v[j]);
nr+=k-j;
}
out<<nr;
return 0;
}
