Cod sursa(job #1599655)
| Utilizator | Data | 14 februarie 2016 09:25:57 | |
|---|---|---|---|
| Problema | Numarare triunghiuri | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.21 kb |
#include <fstream>
using namespace std;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int n, v[5], s = 0;
bool ok = false;
int main()
{
fin >> n;
for (int i = 0; i < n; i++)
{
fin >> v[i];
}
while (!ok)
{
ok = true;
for (int i = 0; i < n - 1; i++)
{
if (v[i] > v[i + 1])
{
int aux = v[i];
v[i] = v[i + 1];
v[i + 1] = aux;
ok = false;
}
}
}
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n - 1; j++)
{
int st = j + 1, dr = n - 1, mij;
while (st <= dr)
{
mij = (st + dr) / 2;
if (v[mij] > v[i] + v[j])
{
dr = mij - 1;
}
else if ((mij == n - 1) || (v[mij + 1] > v[i] + v[j]))
{
s += mij - j;
break;
}
else
{
st = mij;
}
}
}
}
fout << s;
return 0;
}
