Pagini recente » Istoria paginii runda/campion/clasament | Cod sursa (job #2067613) | Cod sursa (job #2267364) | Cod sursa (job #2217316) | Cod sursa (job #1599659)
#include <fstream>
using namespace std;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int n, v[1000], 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 + 1;
}
}
}
}
fout << s;
return 0;
}