Cod sursa(job #2429728)
| Utilizator | Data | 10 iunie 2019 22:50:00 | |
|---|---|---|---|
| Problema | Numarare triunghiuri | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 1.15 kb |
#include <iostream>
#include <fstream>
using namespace std;
int n,st,dr,sol,m;
unsigned short A[801];
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
void qs(int st,int dr)
{
if(st<dr)
{
int median = (st+dr)/2;
swap(A[st],A[median]);
int i = st,j = dr,d =0;
while(i<j)
{
if(A[i]>A[j])
{
swap(A[i],A[j]);
d = 1-d;
}
i+=d;
j-= 1-d;
}
qs(st,i-1);
qs(i+1,dr);
}
}
int main()
{
fin>>n;
for(int i = 0;i<n;i++)
fin>>A[i];
for(int i = 0;i<n;i++)
{
for(int j = i+1;j<=n;j++)
{
st = j+1;
dr = n;
sol = -1;
while(st<dr)
{
m = (st+dr)/2;
if(A[m]<=A[i]+A[j])
{
st = m+1;
sol = m;
}
else
{
dr = m-1;
}
}
if(sol!=-1) t++;
}
}
return 0;
}
