Ignatius and the Princess IV

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32767 K (Java/Others)
Total Submission(s): 43629    Accepted Submission(s): 19213

Problem Description
"OK, you are not too bad, em... But you can never pass the next test." feng5166 says.

"I will tell you an odd number N, and then N integers. There will be a special integer among them, you have to tell me which integer is the special one after I tell you all the integers." feng5166 says.

"But what is the characteristic of the special integer?" Ignatius asks.

"The integer will appear at least (N+1)/2 times. If you can't find the right integer, I will kill the Princess, and you will be my dinner, too. Hahahaha....." feng5166 says.

Can you find the special integer for Ignatius?

 
Input
The input contains several test cases. Each test case contains two lines. The first line consists of an odd integer N(1<=N<=999999) which indicate the number of the integers feng5166 will tell our hero. The second line contains the N integers. The input is terminated by the end of file.
 
Output
For each test case, you have to output only one line which contains the special number you have found.
 
Sample Input
5
1 3 2 3 3
11
1 1 1 1 1 5 5 5 5 5 5
7
1 1 1 1 1 1 1
 
Sample Output
3
5
1
 
 
 

被专题的第一题吓到了,以为还是一道难题,就复杂考虑了。排序,然后

dp[i] = (a[i] == a[i-1]) ? dp[i-1] + 1 : 1

后来才发现必定有解,直接输出就可以了

 #include <iostream>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <sstream>
#include <stack>
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int maxn = ;
int a[maxn];
int dp[maxn]; int main() {
freopen("in.txt", "r", stdin);
int n;
while(~scanf("%d", &n)) {
memset(dp, , sizeof(dp));
for(int i = ; i < n; i++) {
scanf("%d", &a[i]);
}
if(n == ) {//特判了一下
printf("%d\n", a[]);
continue;
}
sort(a, a+n);
dp[] = ;
int maxdp = dp[], pos = -;
for(int i = ; i < n; i++) {
dp[i] = (a[i] == a[i-]) ? dp[i-] + : ;
if(dp[i] > maxdp) {
maxdp = dp[i];//最大值的dp,对应出现最多的数
pos = i;
}
}
printf("%d\n", a[pos]);
}
}

最新文章

  1. CSS3的flex布局
  2. JAVA多线程超时加载当网页图片
  3. MySQL5.7安装与配置(YUM)
  4. AX7: CREATE NEW PACKAGE\MODEL
  5. JavaScript 数组冒泡排序练习
  6. JAVA - Collections用法总结
  7. 开个帖,开始学习shell编程
  8. Codeforces Round #346 (Div. 2) E F
  9. Python strip函数用法小结
  10. Rhel6-cacti+nagios+ganglia(nginx)配置文档
  11. 【leetcode】4Sum
  12. Linux下c++中的atoi、atol、atoll、atof函数调用实例
  13. [Freescale]E9学习笔记-LTIB安装配置
  14. 漫漫人生路,学点Jakarta基础-重写(覆盖)、重载
  15. Django中上传图片---避免因图片重名导致被覆盖
  16. Uva10562——Undraw the Trees
  17. 【vijos1780】【NOIP2012】开车旅行 倍增
  18. PAT 1076 Wifi密码
  19. 待选框、目标框select项目左右移动
  20. struts2拦截器执行模拟 参考马士兵老师

热门文章

  1. linux命令学习笔记(58):telnet命令
  2. 【遍历二叉树】04二叉树的层次遍历【Binary Tree Level Order Traversal】
  3. 关于avpicture_fill 和 sws_scale的关系
  4. java静态方法(变量)、非静态方法(变量)区别
  5. Linux下eclipse及mysql安装,c++访问mysql数据库
  6. JUnit手记
  7. 随机数 while循环 do while循环 for循环
  8. HDOJ1015(简单深搜)
  9. LAMP 1.4 PHP编译安装问题解决
  10. C# 删除文件和目录到回收站