Problem Description
Input
Output
Example Input
4 2
1 2
1 3
2 2
3 4
Example Output
5
#include<stdio.h>
struct node
{
int w;
int p;
}a[10000];
void sort(int left, int right)
{
int i,j;
struct node mid;
i=left; j=right;
mid=a[i];
if(i>=j)
return ;
while(i<j)
{
while(i<j&&a[j].w>mid.w)
j--;
while(i<j&&a[j].w==mid.w)
{
if(a[j].p<mid.p)
{
j--;
}
else
break;
}
a[i]=a[j];
while(i<j&&a[i].w<mid.w)
i++;
while(i<j&&a[i].w==mid.w)
{
if(a[i].p<mid.p)
{
i++;
}
else
break;
}
a[j]=a[i];
}
a[i]=mid;
sort(left,i-1);
sort(j+1,right);
}
int main()
{
int n,m;
int i;
int sum;
while(scanf("%d%d",&n,&m)!=EOF)
{
sum=0;
for(i=0;i<n;i++)
{
scanf("%d%d",&a[i].w,&a[i].p);
}
sort(0,n-1);
for(i=0;i<m;i++)
{
sum+=a[i].p;
}
printf("%d\n",sum);
}
return 0;
}