Pagini recente » Cod sursa (job #1477731) | Cod sursa (job #2377224) | Cod sursa (job #954050) | Cod sursa (job #2405591) | Cod sursa (job #163448)
Cod sursa(job #163448)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int N,
L[801];
bool ls(const int &a, const int &b) {
return a > b;
}
int find_last(int p, int r, int a, int b) {
while (p < r) {
int q = (p + r)/ 2;
if (a < L[q] + b)
p = q + 1;
else
r = q;
}
return p;
}
int main(int argc, char *argv[]) {
FILE *fi = fopen("nrtri.in", "r");
fscanf(fi, "%d", &N);
for (int i(0); i < N; ++i)
fscanf(fi, "%d", L + i);
fclose(fi);
sort(L, L + N, ls);
int total(0);
for (int i(0); i < N; ++i)
for (int j = i + 1; j < N; ++j) {
int k = find_last(j, N - 1, L[i], L[j]);
total += k - j;
}
ofstream fout("nrtri.out");
fout << total << endl;
fout.close();
return 0;
}