Pagini recente » Cod sursa (job #114325) | Cod sursa (job #656875) | Cod sursa (job #1279141) | Cod sursa (job #2092131) | Cod sursa (job #2003175)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("nrtri.in");
ofstream out("nrtri.out");
int val[801];
int n;
int poz;
void citire(){
in >> n;
for(int i = 1; i <= n; i++)
in >> val[i];
}
void QuickSort(int st, int dr){
int i = st, j = dr;
int pivot = val[(st + dr) / 2];
while(i <= j){
while(val[i] < pivot)i++;
while(val[j] > pivot)j--;
if(i <= j ){
int aux = val[i];
val[i] = val[j];
val[j] = aux;
i++;
j--;
}
}
if(i < dr)
QuickSort(i, dr);
if(j > st)
QuickSort(st, j);
}
void cautareBinara(int st, int dr, int caut){
if(st > dr)
return ;
else{
int mij = (st + dr) / 2;
if(val[mij] <= caut){
poz = mij;
st = mij + 1;
}
else
dr = mij - 1;
cautareBinara(st, dr, caut);
}
}
int main(){
int nr = 0;
citire();
QuickSort(1, n);
// for(int i = 1; i<=n; i++)
// out << val[i] << ' ';
for(int i = 1; i < n - 1 ; i++)
for(int j = i + 1; j < n ; j++){
int sum = val[i] + val[j];
poz = 0;
cautareBinara(j + 1, n, sum);
if(poz != 0)
nr += poz - j;
}
out << nr ;
return 0;
}