注意排序的依据。。。
a->h*b->d小于b->h*a->d;
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#define N 21
int n;
struct node
{
int h,d;
}A[N];
int cmp(const void*a,const void*b)
{
struct node *c,*d;
c=(struct node*)a;
d=(struct node*)b;
return c->h*d->d-d->h*c->d;
}
int main()
{
int i,j;
__int64 ans;
while(scanf("%d",&n)!=-1)
{
for(i=0;i<n;i++)
scanf("%d%d",&A[i].d,&A[i].h);
qsort(A,n,sizeof(A[0]),cmp);
ans=0;
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
ans+=A[i].h*A[j].d;
}
printf("%I64d\n",ans);
}
return 0;
}