Pagini recente » Borderou de evaluare (job #449251) | Borderou de evaluare (job #751830) | Borderou de evaluare (job #752453) | Cod sursa (job #2114957)
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("nrtri.in");
ofstream g("nrtri.out");
int a[801];
int cautbin(int st,int dr,int v)
{
int mij;
while(st<=dr)
{mij=(st+dr)/2;
if(a[mij]<=v)
st=mij+1;
else
dr=mij-1;}
mij=(st+dr)/2;
while(a[mij]>v)
mij--;
return mij;
}
int main()
{int N,S,NR,SOL=0;
f>>N;
for(int i=1;i<=N;i++)
f>>a[i];
for(int i=1;i<=N-1;i++)
for(int j=i+1;j<=N;j++)
if(a[j]<a[i])
swap(a[i],a[j]);
for(int i=1;i<=N-1;i++)
{for(int j=i+1;j<=N;j++)
{
S=a[i]+a[j];
NR=cautbin(j+1,N,S);
// cout<<i<<' '<<j<<"->"<<NR-j<<endl;
SOL+=NR-j;
}
}
g<<SOL;
return 0;
}