Cod sursa(job #1914557)
| Utilizator | Data | 8 martie 2017 17:27:55 | |
|---|---|---|---|
| Problema | Numarare triunghiuri | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.64 kb |
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("nrtri.in");
ofstream out("nrtri.out");
const int N = 801;
int v[N], n, r = 0, pas, rez = 0, k;
int tri(int x)
{
pas = N;
while(pas != 0)
{
if(r + pas <= n && v[r+pas] <=x)
{
r+=pas;
}
pas/=2;
}
return r;
}
int main()
{
in>>n;
for(int i = 1; i <= n; i++)
in>>v[i];
sort(v + 1, v + n + 1);
for(int i = 1; i < n; i++)
for(int j = i+1; j <= n; j++)
{
k = tri(v[i] + v[j]);
if(k > j)
rez += k-j;
}
out<<rez;
return 0;
}
