Pagini recente » Cod sursa (job #3000048) | Cod sursa (job #583158) | Cod sursa (job #2767690) | Cod sursa (job #3129929) | Cod sursa (job #3204095)
/*#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin("nrtri.in");
ofstream cout("nrtri.out");
vector<int>v;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
v.resize(n+1);
for(int i=1;i<=n;i++){
cin>>v[i];
}
sort(v.begin()+1,v.end());
int nr1,nr2,nr3;
int cont=0;
for(int i=1;i<=n-2;i++){
nr1=i;
for(int j=i+1;j<=n-1;j++){
nr2=j;
nr3=j+1;
while(nr3<n && v[nr3]<=v[nr1]+v[nr2]){
nr3+=1;
}
cont+=nr3-nr2-(v[nr3]>v[nr1]+v[nr2]);
}
}
cout<<cont;
}
*/
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin("nrtri.in");
ofstream cout("nrtri.out");
vector<int>v;
int cautBinar(int st,int dr,int nr1,int nr2){
int rasp=st*(v[st]<=v[nr1]+v[nr2])+nr2*!(v[st]<=v[nr1]+v[nr2]);
while(st<=dr){
int mij=(st+dr)/2;
if(v[mij]>v[nr1]+v[nr2]){
dr=mij-1;
}else{
rasp=mij;
st=mij+1;
}
}
return rasp;
}
int main(){
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
v.resize(n+1);
for(int i=1;i<=n;i++){
cin>>v[i];
}
sort(v.begin()+1,v.end());
int nr1,nr2,nr3;
int cont=0;
for(int i=1;i<=n-2;i++){
for(int j=i+1;j<=n-1;j++){
nr3=cautBinar(j+1,n,i,j);
cont+=nr3-j;
}
}
cout<<cont;
}