Cod sursa(job #614046)

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