Cod sursa(job #689061)
Utilizator | Data | 24 februarie 2012 09:04:21 | |
---|---|---|---|
Problema | Numarare triunghiuri | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.55 kb |
#include<fstream>
#include<algorithm>
using namespace std;
long v[3001];
int main ()
{
long n,i,nr,p,q,ok,s,m,j;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
fin>>n;
nr=0;
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; j++)
{
ok=0;
p=1; q=n;
s=v[i]+v[j];
while(p<=q && ok==0)
{
m=(p+q)/2;
if(v[m]==s)
{
ok=1;
nr++;
}
else if (v[m]<s) p=m+1;
else q=m-1;
}
}
fout<<nr;
fin.close();
fout.close();
return 0;
}