Codeforces 558B Amr and The Large Array
1 second
256 megabytes
standard input
standard output
Amr has got a large array of size n.
Amr doesn't like large arrays so he intends to make it smaller.
Amr doesn't care about anything in the array except the beauty of it. The beauty of the array is defined to be the maximum number of times that some
number occurs in this array. He wants to choose the smallest subsegment of this array such that the beauty of it will be the same as the original array.
Help Amr by choosing the smallest subsegment possible.
The first line contains one number n (1 ≤ n ≤ 105),
the size of the array.
The second line contains n integers ai (1 ≤ ai ≤ 106),
representing elements of the array.
Output two integers l, r (1 ≤ l ≤ r ≤ n),
the beginning and the end of the subsegment chosen respectively.
If there are several possible answers you may output any of them.
5
1 1 2 2 1
1 5
5
1 2 2 3 1
2 3
6
1 2 2 1 1 2
1 5
A subsegment B of
an array A from l to r is
an array of size r - l + 1 where Bi = Al + i - 1 for
all 1 ≤ i ≤ r - l + 1
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <string>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
using namespace std; const double PI = acos(-1.0);
const double e = 2.718281828459;
const double eps = 1e-8; struct node
{
int num;
int time;
int l;
int r;
int range;
} index[1000010]; int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int n;
while(cin>>n)
{
map<int, int>g;
g.clear();
memset(index, 0, sizeof(index));
int t;
int d = 0;
int dd;
int maxd = 1;
int maxtime = 0;
int maxrange = 1;
for(int i = 1; i <= n; i++)
{
scanf("%d", &t);
if(g[t] != 0)
{
dd = g[t];
index[dd].time++;
index[dd].r = i;
index[dd].range = index[dd].r-index[dd].l+1;
if(maxtime<index[dd].time || maxtime==index[dd].time&&maxrange>index[dd].range)
{
maxtime = index[dd].time;
maxd = dd;
maxrange = index[dd].range;
}
}
else
{
g[t] = ++d;
dd = g[t];
index[dd].num = t;
index[dd].time = 1;
index[dd].l = index[dd].r = i;
index[dd].range = 1;
if(maxtime < index[dd].time)
{
maxtime = index[dd].time;
maxd = dd;
maxrange = 1;
}
}
}
printf("%d %d\n", index[maxd].l, index[maxd].r);
}
return 0;
}
Codeforces 558B Amr and The Large Array的更多相关文章
- codeforces 558B. Amr and The Large Array 解题报告
题目链接:http://codeforces.com/problemset/problem/558/B 题目意思:给出一个序列,然后找出出现次数最多,但区间占用长度最短的区间左右值. 由于是边读入边比 ...
- codeforces 558B Amr and The Large Array-yy
题意:有一个数组.如今要削减它的尺寸.数组中同样元素的个数的最大值为数组的魅力值,要求削减后魅力值不能降低,同一时候要尽可能的把尺寸减到最小 分析:水题,主要是不要想复杂了.还有就是沉下心来做 代码: ...
- codeforces 558B B. Amr and The Large Array(水题)
题目链接: B. Amr and The Large Array time limit per test 1 second memory limit per test 256 megabytes in ...
- Codeforces Round #312 (Div. 2)B. Amr and The Large Array 暴力
B. Amr and The Large Array Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contes ...
- B. Amr and The Large Array(Codeforces Round #312 (Div. 2)+找出现次数最多且区间最小)
B. Amr and The Large Array time limit per test 1 second memory limit per test 256 megabytes input st ...
- CF 558B(Amr and The Large Array-计数)
B. Amr and The Large Array time limit per test 1 second memory limit per test 256 megabytes input st ...
- 【36.86%】【codeforces 558B】Amr and The Large Array
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- Codeforces Round #312 (Div. 2) B.Amr and The Large Array
Amr has got a large array of size n. Amr doesn't like large arrays so he intends to make it smaller. ...
- CodeForces 558B
Description Amr has got a large array of size n. Amr doesn't like large arrays so he intends to make ...
随机推荐
- [PHP] Ecstore 开发学习资源
一.ECOS框架图 二.学习资源链接 PHP之窗 http://www.phpwindow.com/ ECOS百科大全 http://www.ec-os.net/doc.html
- C - Unary(map)
Problem description Unary is a minimalistic Brainfuck dialect in which programs are written using on ...
- logrotate配置文件
一.logrotate配置文件 /etc/logrotate.conf
- C# WinForm的练习
今天写了一个WinForm的练习,将源代码贴出来和大家一起学习学习. 首先:按照下图将一个button控件.三个RadioButton控件.三个CheckBox控件.一个Label控件和一个Track ...
- 推荐使用sublime text 3 以及常用快捷键
vim这种上古神器,需要学习.记忆.折腾.比如我的初衷是要开发php的,连php都没专研透,哪有精力去折腾vim这玩意. 当然,vim绝技练成以后,配置成各种IDE都不是问题,还有你手速会飞起来. 但 ...
- 基于 Web 的 Go 语言 IDE - Wide 1.4.0 发布!
Wide 是什么 Wide 是一个基于 Web 的 Go 语言团队 IDE . 在线开发:打开浏览器就可以进行开发.全快捷键 智能提示:代码自动完成.查看表达式.编译反馈. Lint 实时运行:极速编 ...
- WPF创建自定义控件并运用
此项目源码:https://github.com/lizhiqiang0204/WpfCustomControlLibrary1 首先创建自定义控件库项目 项目名称命名为:WpfCustomContr ...
- node——buffer
buffe方便数据的传输,可一次性传输一部分数据一.类型介绍1.javascript语言没有读取或操作二进制数据的机制.2.Node.js中引入了Buffer类型可以使我们操作TCP流或文件流3.Bu ...
- 更新时间戳.txt
UPDATE bbs2 INNER JOIN time1 ON bbs2.AnnounceID = time1.AnnounceID SET bbs2.asptime = time1.asptime
- 自动化测试之firebug、firepath、IDE的使用
1firebug安装-firefox添加组件-firebug 如图 firepath依赖于firebug 展示路径用,安装和firebug一样