您的位置:首页 > 其它

uva ---11136 Hoax or what--优先队列即可

2015-09-06 00:21 465 查看
//
//  main.cpp
//  uva  11136 - Hoax or what---优先队列
//
//  Created by XD on 15/9/5.
//  Copyright (c) 2015年 XD. All rights reserved.
//
#include <iostream>
#include <string>
#include <queue>
#include <stack>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include<vector>
#include <string.h>
#include <string>
#include <algorithm>
#include <set>
#include <map>
#include <cstdio>
using namespace std ;
int flag[1000000+10] ;
int main(int argc, const char * argv[]) {
int n , k ,d;
priority_queue<int , vector<int> , greater<int > > que1 ;
priority_queue<int , vector<int> , less<int > > que2 ;
while (scanf("%d",&n)==1 && n!=0) {
while (!que1.empty()) {
que1.pop() ;
}
while (!que2.empty()) {
que2.pop() ;
}
memset(flag, 0, sizeof(flag)) ;
long long  ans  = 0 ;int large =0,low=0 ;
for (int i = 0 ; i < n ; i++) {
scanf("%d",&k) ;
for (int j = 0; j < k ; ++j) {
scanf("%d" ,&d) ;
flag[d]++ ;
que1.push(d) ; que2.push(d) ;
}
while (flag[que1.top()] == 0 ) {
que1.pop() ;
}
flag[que1.top()]-- ;
large = que1.top() ; que1.pop() ;
while (flag[que2.top()] == 0 ) {
que2.pop() ;
}
flag[que2.top()]-- ;
low = que2.top() ; que2.pop() ;
ans += abs(large -low) ;
}
printf("%lld\n",ans) ;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: