Pagini recente » Cod sursa (job #56458) | Cod sursa (job #1395218) | Cod sursa (job #2599592) | Cod sursa (job #965522) | Cod sursa (job #3218474)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("nrtri.in");
ofstream fout ("nrtri.out");
int bin(int v[], int val, int st, int dr)
{
int ans = dr+1;
while (st <= dr)
{
int med = (st + dr)/2;
if (v[med] > val)
{
dr = med - 1;
ans = med;
}
else
{
st = med + 1;
//ans = med;
}
}
return ans;
}
int a[805];
int main()
{
int n;
fin >> n;
for (int i = 1; i <= n; i++)
{
fin >> a[i];
}
// bool sortat = false;
// while (sortat == false)
// {
// sortat = true;
// for (int i = 1; i < n; i++)
// {
// if (a[i] > a[i+1])
// {
// swap (a[i], a[i+1]);
// sortat = false;
// }
// }
// }
sort(a+1, a+n+1);
///sortarea e buna
int cate = 0;
for (int i = 1; i <= n; i++)
{
///vrem sa folosim a + b >= c pt un triunghi oarecare
for (int x = i+1; x <= n; x++)
{
int s = a[i] + a[x];
int poz = bin(a, s, x+1, n);
cate = cate + poz - 1 - x; //randul problema ig
//fout << a[i] << " " << a[x] << " " << poz << " " << x+1 << " " << cate <<'\n';
//fout << a[i] << " " << a[x] << " " << poz << " " << cate << '\n';
}
}
fout << cate;
return 0;
}