Cod sursa(job #614040)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 5 octombrie 2011 15:06:39
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<fstream>
#include<iostream>
using namespace std;
int main ()
{
	unsigned int n,pos,i,j,q,p,s,v[801],mij,poz;
	ifstream f("nrtri.in");
	ofstream g("nrtri.out");
	f>>n;
	for(i=1;i<=n;i++)
		f>>v[i];
	f.close();
	pos=0;
	sort(v+1,v+n+1);
	for(i=1;i<=n-2;i++)
		for(j=i+1;j<=n-1;j++) {
			s=v[i]+v[j];
			p=j+1;
			q=n;
			poz=1;
			while(p<=q) {
				mij=(p+q)/2;
				if(s<v[mij]) 
					q=mij-1;
				else if(s>v[mij]) { 
					p=mij+1;
					poz=mij;
				}
				else if(s==v[mij]) {
					poz=mij;
					break;
				}
			}
			while(v[poz]==v[poz+1]) poz++;
			if(poz!=1)
				pos=pos+poz-j;
		}
	g<<pos;
	g.close();
	return 0;
}