5204: [CodePlus 2018 3 月赛]投票统计

题目:传送门


题解:

   谢谢niang老师的一道sui题

   离散化之后直接搞啊(打完之后还错了...)

  


代码:

 #include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
int T;
struct node
{
int x,y,id;
}a[],b[];int s[],ans[],A[];
bool v[];
bool cmp(node n1,node n2){return n1.x<n2.x;}
int main()
{
scanf("%d",&T);
while(T--)
{
int n,m=;scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&a[i].x),a[i].y=i;
for(int i=;i<=n;i++)b[i]=a[i];
sort(b+,b+n+,cmp);
b[].id=;
for(int i=;i<=n;i++)
{
if(b[i].x!=b[i-].x)b[i].id=b[i-].id+;
else b[i].id=b[i-].id;
}
for(int i=;i<=n;i++)a[b[i].y].id=b[i].id,m=max(m,b[i].id);
for(int i=;i<=n;i++)ans[a[i].id]=a[i].x;memset(s,,sizeof(s));
int maxx=;for(int i=;i<=n;i++)s[a[i].id]++,maxx=max(s[a[i].id],maxx);int len=;
for(int i=;i<=m;i++)if(s[i]==maxx)A[++len]=ans[i];
if(len==m)printf("-1\n");
else
{
printf("%d\n",len);
for(int i=;i<len;i++)printf("%d ",A[i]);
printf("%d\n",A[len]);
}
}
return ;
}

最新文章

  1. android 横向滚动条
  2. node body-parser
  3. hdu 5102 树上前k短路径长度和
  4. uva 839 Not so Mobile-S.B.S.
  5. 《Java程序设计》实验二 实验报告
  6. Android外派(安卓外派) — 长年提供安卓开发工程师外派业务(可签合同)
  7. 转 android 侧滑实现
  8. c#Lamdba表达式与托付
  9. java多线程编程题之连续打印abc的几种解法
  10. Angular路由——路由守卫
  11. 运用SqlSugar框架+Axios写的增删查案例
  12. react-native清除android项目缓存的命令
  13. 服务器CPU繁忙或内存压力引起网络掉包的浅析与总结
  14. JavaScript 加解密库(crypto-js)
  15. Ubuntu18.04上安装java
  16. 分布式系统下的全局id生成策略分析
  17. bash 设置
  18. html禁止文本输入框记录输入记录,单击input出现输入过的记录
  19. JS时间格式和时间戳的互转
  20. Delphi报的错误

热门文章

  1. 2014年湖北省TI杯大学生电子设计竞赛论文格式
  2. 移动App测试点
  3. Authrize特性登录验证
  4. Windows 安装 MySQL8
  5. python写的爬虫工具,抓取行政村的信息并写入到hbase里
  6. .NET Datatable常用系列一
  7. call使用场景
  8. dedecms清空栏目后,新建ID不从1开始的解决方法
  9. 『转』How to Think About Your Career
  10. 一个APP开发有那么难吗?