Cod sursa(job #1514673)
| Utilizator | Data | 31 octombrie 2015 13:50:07 | |
|---|---|---|---|
| Problema | Numarare triunghiuri | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.61 kb |
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int n, v[3001], i, a, b, nr=0, mid, st, dr;
int main(){
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
sort(v+1, v+n+1);
for(i=1;i<n-1;i++)
for(a=1+i;a<n;a++) {
st=a+1;
dr=n;
while(st<=dr){
mid=(st+dr)/2;
if(v[mid]<=v[a]+v[i])
st = mid+1;
else
dr=mid-1;
}
nr += (dr-a);
}
fout<<nr;
}
