Cod sursa(job #2430119)

Utilizator StefanSanStanescu Stefan StefanSan Data 12 iunie 2019 20:04:26
Problema Numarare triunghiuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#define MAX 1000001

using namespace std;

ifstream in("nrtri.in");
ofstream out("nrtri.out");

int a[MAX], n, nr = 0;

bool ok(int a, int b, int c) {
	if (a + b >= c && a + c >= b && c + b >= a)return true;
	else return false;
}



int main() {
	in >> n;
	for (int i = 0; i < n; i++) {
		in >> a[i];
	}
	sort(a, a + n);
	for (int i = 0; i < n; i++) {
		for (int j = i; j < n; j++) {
			if (i != j) {


				int left = 0, right = n;
				while (left <= right) {
					int mid = (left + right) / 2;
					if (ok(a[mid], a[i], a[j]) == true && a[i] != a[mid] && a[j] != a[mid]) {
						nr++;
						break;
					}

					int p = (a[i] + a[j] + a[mid]) / 3;

					if (a[mid] < p) left = mid + 1;
					else right = mid - 1;

				}


			}
		}
	}
	out << nr - 1;
}