Pagini recente » Cod sursa (job #2565495) | Cod sursa (job #3224456) | Cod sursa (job #1267742) | Cod sursa (job #1391123) | Cod sursa (job #426351)
Cod sursa(job #426351)
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<long> sol(1);
long n,i,j,nr,curentval=0,curent=0,k,l,cont=0;
freopen ("medie.in", "r", stdin);
freopen ("medie.out", "w", stdout);
scanf ("%ld", &n);
vector<int> a(n);
vector<int>::iterator p,q;
for (i=0; i<n; i++) scanf ("%d",&a[i]);
sort (a.begin(), a.end());
nr = 0;
sol[nr]=0;
//for (i=0; i<n; i++) printf ("%d ", a[i]);
for (i=0; i<n; i++)
for (j=i+1; j<n; j++)
if ((a[i]+a[j])%2==0) { p=lower_bound(a.begin(), a.end(),(a[i]+a[j])/2);
if (a[p-a.begin()] != (a[i]+a[j])/2) { curentval =0; curent=a[j]; }
else { q=upper_bound(a.begin(), a.end(), (a[i]+a[j])/2);
curent=a[j];
curentval=(q-a.begin())-(p-a.begin());
//printf ("pentru %d si %d avem %d posibilitati\n", a[i],a[j],curentval);
if (i>=(p-a.begin()) && i<=(q-a.begin()-1)) curentval--;
if (j>=(p-a.begin()) && j<=(q-a.begin()-1)) curentval--;
//printf ("pentru %d si %d avem %d posibilitati\n", a[i],a[j],curentval);
sol[nr]+=curentval;
//printf ("am marit cu %d\n", curentval);
if (a[j+1] == curent) { cont = 0;
for (l=j+1; l<n; l++)
if ((a[l] > a[j]) || (l==n-1))
if (l==n-1) { cont = cont+l-j; break;}
else {cont=cont+l-j-1; break;}
sol[nr]+=cont*curentval;
j=l;
//printf ("am marit cu %d facut din %d si %d \n", cont*curentval, cont,curentval);
for (k=nr; k>=0; k--)
if (sol[k] > 9)
if (k==0) { sol.insert (sol.begin(), sol[k]/10); sol[k+1]=sol[k+1]%10; nr++; }
else { sol[k-1]+=sol[k]/10; sol[k]=sol[k]%10; }
else break;
//for (i=0; i<=nr; i++) printf ("%d",sol[i]);
//printf ("\n");
}
//printf ("am marit cu %d\n", curentval);
for (k=nr; k>=0; k--)
if (sol[k] > 9)
if (k==0) { sol.insert (sol.begin(), sol[k]/10); sol[k+1]=sol[k+1]%10; nr++; }
else { sol[k-1]+=sol[k]/10; sol[k]=sol[k]%10;}
else break;
//for (i=0; i<=nr; i++) printf ("%d",sol[i]);
//printf ("\n");
}
}
for (i=0; i<=nr; i++) printf ("%d",sol[i]);
return 0;
}