Pagini recente » Cod sursa (job #2449261) | Cod sursa (job #168969) | Cod sursa (job #2733345) | Cod sursa (job #2935633) | Cod sursa (job #1597619)
#include <cstdio>
#include <iostream>
#include <set>
#include <climits>
#include <map>
#include <algorithm>
#include <list>
#include <vector>
#include <utility>
#include <cstdlib>
#include <iomanip>
#include <cstring>
#include <string>
#include <cmath>
using namespace std;
int f(int v[16000], int n, int vm) {
int ans = 1, aux = vm;
for (int i = 0; i < n; i++) {
if (aux >= v[i])
aux -= v[i];
else {
ans++;
aux = vm - v[i];
}
}
return ans;
}
int main() {
// freopen("tt.txt", "r", stdin);
freopen("nrtri.in", "r", stdin);
freopen("nrtri.out", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(0);
int n, v[800];
cin >> n;
for (int i = 0; i < n; i++) {
cin >> v[i];
}
sort(v, v + n);
int ans = 0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
int left = j + 1, right = n - 1;
while (left < right) {
int mid = (left + right) / 2;
if (v[mid] > v[i] + v[j])
right = mid;
else
left = mid + 1;
}
while (v[left] > v[i] + v[j])
left--;
ans += left - j;
}
}
cout << ans;
return 0;
}