您的位置:首页 > 大数据 > 人工智能

Codeforces Round #209 (Div. 2) D. Pair of Numbers

2013-11-03 00:28 507 查看
D. Pair of Numbers

time limit per test
2 seconds

memory limit per test
256 megabytes

input
standard input

output
standard output

Simon has an array a1, a2, ..., an,
consisting of n positive integers. Today Simon asked you to find a pair of integers l, r (1 ≤ l ≤ r ≤ n),
such that the following conditions hold:

there is integer j (l ≤ j ≤ r),
such that all integers al, al + 1, ..., ar are
divisible by aj;

value r - l takes the maximum value among all pairs for which condition 1 is
true;

Help Simon, find the required pair of numbers (l, r). If there are multiple required pairs find all of them.

Input

The first line contains integer n (1 ≤ n ≤ 3·105).

The second line contains n space-separated integers a1, a2, ..., an (1 ≤ ai ≤ 106).

Output

Print two integers in the first line — the number of required pairs and the maximum value of r - l. On the following line print all l values
from optimal pairs in increasing order.

Sample test(s)

input
5
4 6 9 3 6


output
1 3
2


input
5
1 3 5 7 9


output
1 4
1


input
5
2 3 5 7 11


output
5 0
1 2 3 4 5


Note

In the first sample the pair of numbers is right, as numbers 6, 9, 3 are divisible by 3.

In the second sample all numbers are divisible by number 1.

In the third sample all numbers are prime, so conditions 1 and 2 are
true only for pairs of numbers (1, 1), (2, 2), (3, 3), (4, 4), (5, 5).

刚开始看的时候,数据好大的说,其它,也就是找到最长的连续数列,使的最大公约数,是这列数中的一个,很简单的啦!

#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
#define M 300050
int pri[M],ans[M];
int main()
{
int n,l,r;
while(scanf("%d",&n)!=EOF){
for(int i=1;i<=n;i++){
scanf("%d",&pri[i]);
}
int cnt=0,tmp=0;
for(int i=1;i<=n;){
l=r=i;
while(l&&pri[l]%pri[i]==0)l--;
while(r<=n&&pri[r]%pri[i]==0)r++;
i=r;r=r-l-2;
if(r>tmp)cnt=0,tmp=r;
if(r==tmp)ans[cnt++]=l+1;
}
printf("%d %d\n",cnt,tmp);
for(int i=0;i<cnt;i++)
printf("%d ",ans[i]);
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: