UVA 11136 Hoax or what set
2016-04-28 20:35
267 查看
点击打开题目链接
set:自动去重排序
multiset:不去重,排序
#include <cstdio>
#include <set>
#include <iostream>
using namespace std;
int main()
{
//freopen("in.txt", "r", stdin);
multiset<int> muSet;
multiset<int>::iterator muSetIt; //迭代器,相当于一个指针
int m, n, x;
while (~scanf("%d", &n), n)
{
muSet.clear(); //清空
long long ans = 0; //注意超int
for (int i = 0; i < n; i++)
{
scanf("%d", &m);
for (int j = 0; j < m; j++)
{
scanf("%d", &x);
muSet.insert(x); //插入
}
muSetIt = muSet.end(); //指向最后元素的下一个位置(不是最后的元素)
muSetIt--; //向前移动,这是指向了最后一个元素
int Max = *muSetIt;
muSet.erase(muSetIt); //将这个最大的元素删除
muSetIt = muSet.begin(); //第一个元素,最小的
int Min = *muSetIt;
muSet.erase(muSetIt);
ans += Max - Min;
}
cout << ans << endl;
}
return 0;
}
set:自动去重排序
multiset:不去重,排序
#include <cstdio>
#include <set>
#include <iostream>
using namespace std;
int main()
{
//freopen("in.txt", "r", stdin);
multiset<int> muSet;
multiset<int>::iterator muSetIt; //迭代器,相当于一个指针
int m, n, x;
while (~scanf("%d", &n), n)
{
muSet.clear(); //清空
long long ans = 0; //注意超int
for (int i = 0; i < n; i++)
{
scanf("%d", &m);
for (int j = 0; j < m; j++)
{
scanf("%d", &x);
muSet.insert(x); //插入
}
muSetIt = muSet.end(); //指向最后元素的下一个位置(不是最后的元素)
muSetIt--; //向前移动,这是指向了最后一个元素
int Max = *muSetIt;
muSet.erase(muSetIt); //将这个最大的元素删除
muSetIt = muSet.begin(); //第一个元素,最小的
int Min = *muSetIt;
muSet.erase(muSetIt);
ans += Max - Min;
}
cout << ans << endl;
}
return 0;
}
相关文章推荐
- 浅析STL中的常用算法
- STL区间成员函数及区间算法总结
- c++ STL容器总结之:vertor与list的应用
- C++在成员函数中使用STL的find_if函数实例
- 关于STL中list容器的一些总结
- 关于STL中的map容器的一些总结
- 浅析stl序列容器(map和set)的仿函数排序
- STL list链表的用法详细解析
- stl容器set,map,vector之erase用法与返回值详细解析
- STl中的排序算法详细解析
- 关于STL中vector容器的一些总结
- 关于STL中set容器的一些总结
- 简单说说STL的内存管理
- STL与泛型编程(1)---模板
- 简单的四则运算
- 数的奇偶性
- ACMer博客瀑布流分析
- ACM程序设计大赛题目分类
- 计算字符串最后一个单词长度
- CppUtest发现的STL容器内存泄漏问题