Pagini recente » Cod sursa (job #2485561) | Cod sursa (job #726621) | Cod sursa (job #2226504) | Cod sursa (job #2984739) | Cod sursa (job #1612159)
#include<fstream>
#define NRMB 801 // numarul maxim de betisoare
#define S3 90001
using namespace std;
FILE*in;
ofstream out("nrtri.out");
int nr_betisoare;
int lungime[NRMB];
int TR[S3];
int solution;
void read()
{
in=fopen("nrtri.in", "r");
fscanf(in, "%d", &nr_betisoare);
for (int i=1; i<=nr_betisoare; i++)
{
fscanf(in, "%d", &lungime[i]);
TR[lungime[i]]++;
}
}
void build_sume()
{
for (int i=3; i<=S3; i++)
TR[i]+=TR[i-1];
}
void build_solution()
{
for (int i=1; i<nr_betisoare; i++)
for (int j=i+1; j<=nr_betisoare; j++)
{
int DIF=abs(lungime[i]-lungime[j]);
if (DIF)
solution+=(TR[lungime[i]+lungime[j]]-TR[DIF]);
else
solution+=TR[lungime[i]+lungime[j]];
if (lungime[i] >= DIF)
solution--;
if (lungime[j] >= DIF)
solution--;
}
solution/=3;
}
void solve()
{
build_sume();
build_solution();
}
void show()
{
out<<solution;
}
int main()
{
read();
solve();
show();
return 0;
}