Cod sursa(job #1133777)

Utilizator TudorMTudor Moldovanu TudorM Data 5 martie 2014 16:50:03
Problema Medie Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include<cstdio>
using namespace std;
FILE *f=fopen("medie.in","r");
FILE *g=fopen("medie.out","w");
int n, nr, v[9001], maxi, mini=100000,fr[10000];
void citire()
{
    int i,j,k,mij,p,u, nr1;
    float m;
    fscanf(f,"%d",&n);
    for(i=1;i<=n;++i)
    {
        fscanf(f,"%d",&v[i]);
        ++fr[v[i]];
        if(v[i]>maxi)maxi=v[i];
        if(v[i]<mini)mini=v[i];
    }
    for(i=1;i<=n;++i)
    {
        p=v[i];
        u=v[i];
        while(p>=mini&&u<=maxi)
        {

            if(fr[p]&&fr[u]&&p!=u)
            {
                nr+=fr[p]*fr[u];
            }
            else if(u==p&&fr[p]>2)
            {
                nr1=0;
                for(j=1;j<=n;++j)
                {
                    for(k=1;k<=n;++k)
                    {
                        if(k!=j&&k!=i&&j!=i)
                        {
                            m=(v[k]+v[j])/2.;
                            if(m==v[i])++nr1;
                        }
                    }
                }
                nr+=nr1/2;
            }
            --p;
            ++u;
        }
    }
    fprintf(g,"%d",nr);
}
int main()
{
    citire();
    fclose(f);
    fclose(g);
    return 0;
}