Cod sursa(job #2847085)
Utilizator | Data | 10 februarie 2022 10:48:44 | |
---|---|---|---|
Problema | Numarare triunghiuri | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.57 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int main(){
int n,a[1000],st,dr,mij,ans(0);
fin>>n;
for(int i=1;i<=n;i++)fin>>a[i];
sort(a+1,a+n+1);
for(int i=1;i<=n-2;i++){
for(int j=i+1;j<=n-1;j++){
// 2 3 4 7
st=j+1,dr=n;
while(st<=dr){
mij=(st+dr)/2;
if(a[mij]>a[i]+a[j])dr=mij-1;
else st=mij+1;
}
ans+=dr-j;
}
}
fout << ans;
return 0;
}
// 3 4 4 3 3 2 3