#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct
{
int *data;
int length;
}SqList;
SqList* InitList(int N)
{
SqList *L = (SqList*)malloc(sizeof(SqList));
L->data = (int*)malloc(sizeof(int)*(N+1));
for(int i=1;i<=N;i++)
{
L->data[i] = 0;
}
L->data[0] = 0;
L->length = N;
return L;
}
int Partition(SqList *L,int low,int high)
{
int pivotkey;
pivotkey = L->data[low];
L->data[0] = pivotkey;
while(low<high)
{
while(low<high && L->data[high]<=pivotkey)
high--;
//Swap(L,low,high);
L->data[low] = L->data[high];
while(low<high && L->data[low]>=pivotkey)
low++;
//Swap(L,low,high);
L->data[high] = L->data[low];
}
L->data[low] = L->data[0];
return low;
}
void QSort(SqList *L,int low, int high)
{
int pivot;
if(low<high)
{
pivot = Partition(L,low,high);
QSort(L,low,pivot-1);
QSort(L,pivot+1,high);
}
}
void QuickSort(SqList *L)
{
QSort(L,1,L->length);
}
int main()
{
SqList *L ;
int N;
cin>>N;
L = InitList(N);
for(int i=1;i<=N;i++)
{
int K,x,y,s;
cin>>K;
s=0;
for(int j=0;j<K;j++)
{
cin>>x>>y;
L->data[x] = L->data[x] + y;
s += y;
}
L->data[i] = L->data[i] - s;
}
QuickSort(L);
for(int i=1;i<=N;i++)
{
printf("%d %.2lf\n",i,L->data[i]*1.0/100);
}
}
数据结构 快速排序
最新推荐文章于 2024-06-17 23:55:50 发布