Pagini recente » Cod sursa (job #2400929) | Cod sursa (job #930876) | Cod sursa (job #376261) | Cod sursa (job #3148724) | Cod sursa (job #2105489)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("nrtri.in");
ofstream fout ("nrtri.out");
int n,i,v[810],j,s,st,mid,dr,sol;
int main () {
fin>>n;
for (i=1;i<=n;i++)
fin>>v[i];
sort(v+1,v+n+1);
for (i=1;i<n-1;i++)
for (j=i+1;j<=n-1;j++) {
s = v[i] + v[j];
/// consider ca s este suma laturilor mici ale triunghiului
/// unde caut a treia latura ?
/// R: intre j+1 si n caut ultima pozitie k cu v[k] < s
/// si inseamna ca toate de la j+1 la k sunt de adunat (k-j)
st=j+1;
dr=n;
while (st<=dr){
mid=(st+dr)/2;
if (v[mid]<s)
dr=mid;
else
st=mid;
}
sol+=st-j;
}
fout<<sol;
}