Cod sursa(job #2065187)
Utilizator | Rosu Diana Michesa dianamichesa | Data | 13 noiembrie 2017 15:45:41 |
---|---|---|---|
Problema | Numarare triunghiuri | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.56 kb |
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("nrtri.in");
ofstream g("nrtri.out");
const int N=801,L=10;
int n,cnt,v[N];
int f2(int a,int b)
{
int pas=1<<L;
int r=0;
while(pas!=0){
if(r+pas<=n && v[r+pas]<=a+b)
r+=pas;
pas/=2;
}
return r;
}
int main()
{
f>>n;
for(int i=1;i<=n;i++)
f>>v[i];
sort(v+1,v+n+1);
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++){
int p=f2(v[i],v[j]);
if(p>=j)
cnt+=p-j;
}
g<<cnt;
return 0;
}