Pagini recente » Cod sursa (job #1474176) | Cod sursa (job #2157782) | Cod sursa (job #2805148) | Cod sursa (job #2209720) | Cod sursa (job #2294391)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int a[810];
int main()
{
int n, i, j, gasit = 0, cnt = 0, stg, dr, mid;
fin >> n;
for(i = 1;i <= n;i++)
fin >> a[i];
sort(a + 1, a + n + 1);
for(i = 1;i < n - 1;i++)
for(j = i + 1;j < n;j++)
{
gasit = 0;
stg = j + 1;
dr = n;
int poz=0;
while(stg <= dr)
{
mid = stg + (dr - stg) / 2;
if(a[j] + a[i] < a[mid])
dr = mid - 1;
else if(a[j] + a[i] > a[mid])
stg = mid + 1;
else if(a[j] + a[i] == a[mid] && a[mid]!=a[mid+1])
{
gasit = 1;
poz=mid;
break;
}
else if(a[j] + a[i] == a[mid] && a[mid]==a[mid+1])
{
stg= mid+1;
}
}
if(gasit==1) cnt+= poz-j;
else
{
if(a[stg]<a[i]+a[j]) cnt+= stg-j;
else cnt+= stg-1-j;
}
}
fout << cnt;
return 0;
}