Pagini recente » Cod sursa (job #310390) | Cod sursa (job #1219285) | Cod sursa (job #558303) | Cod sursa (job #3172782) | Cod sursa (job #3204070)
/*#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;
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++){
nr1=i;
for(int j=i+1;j<=n-1;j++){
if(v[j+1]>v[j]+v[i]){
break;
}
nr2=j;
nr3=cautBinar(j+1,n,nr1,nr2);
cont+=nr3-nr2;
}
}
cout<<cont;
}