Pagini recente » Borderou de evaluare (job #1750365) | Borderou de evaluare (job #2143586) | Borderou de evaluare (job #1878475) | 111111111 | Cod sursa (job #3261905)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("nrtri.in");
ofstream g("nrtri.out");
int v[801];
int binarySearch(int value, int n) {
int pos = 0;
for (int p = 20; p >= 0; --p) {
if (pos + (1 << p) <= n && v[pos + (1 << p)] <= value) {
pos += (1 << p);
}
}
return pos;
}
int main() {
int n, cont=0;
f>>n;
for(int i = 1; i<=n; i++){
f>>v[i];
}
for(int i = 1; i<n; i++){
for(int j = i+1; j<=n; j++){
if(v[i]>v[j]){
swap(v[i], v[j]);
}
}
}
for(int i = 1; i<n; i++){
for(int j = i+1; j<=n; j++){
int value = v[i]+v[j];
cont += binarySearch(value, n)-j;
}
}
g<<cont;
return 0;
}