Pagini recente » Cod sursa (job #2964666) | Cod sursa (job #2065006) | Cod sursa (job #3040898) | Cod sursa (job #473976) | Cod sursa (job #773245)
Cod sursa(job #773245)
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
vector < int > v;
vector < int > :: iterator t;
int n, res, x, i, j;
int bs(int st, int end, int val)
{
int mid;
while(st <= end)
{
mid = (st + end) / 2;
if(v[mid] > val)
end = mid - 1;
else
st = mid + 1;
}
return st - 1;
}
int main()
{
FILE *f = fopen("nrtri.in", "r");
fscanf(f, "%d", &n);
for(i = 0; i < n; ++i)
fscanf(f, "%d", &x), v.push_back(x);
fclose(f);
sort(v.begin(), v.end());
int max_i = n - 2, max_j = n - 1;
for(i = 0; i < max_i; ++i)
for(j = i + 1; j < max_j; ++j)
{
x = v[i] + v[j];
x = bs(j, n - 1, x);
res += x - j;
}
FILE *g = fopen("nrtri.out", "w");
fprintf(g, "%d\n", res);
fclose(g);
return 0;
}