Home >Web Front-end >HTML Tutorial >B. Maximum Value(Codeforces Round #276(div1)_html/css_WEB-ITnose

B. Maximum Value(Codeforces Round #276(div1)_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-24 11:54:421324browse

B. Maximum Value

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

You are given a sequence a consisting of n integers. Find the maximum possible value of  (integer remainder of ai divided byaj), where 1?≤?i,?j?≤?n and ai?≥?aj.

Input

The first line contains integer n ? the length of the sequence (1?≤?n?≤?2·105).

The second line contains n space-separated integers ai (1?≤?ai?≤?106).

Output

Print the answer to the problem.

Sample test(s)

input

33 4 5

output

<strong>找a[i]<a[j]中的a[j]%a[i]的最大值</strong>
<strong>由于ai<1000000;可以hash搞,如果一个点不存在,记录比它小的最大值。</strong>
<strong>至于找最大模后的值,取a[i]==i也就是这个点存在,取模后的最大值肯定i+1+k*i,这样每次增加i查询,</strong>
<strong>查到离最大值最近的值。</strong>
<strong>代码:</strong>
<strong></strong><pre name="code" class="n">#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn=2000000+100;int a[maxn];int main(){    int n;    scanf("%d",&n);    int x;    for(int i=0;i<n;i++)    {        scanf("%d",&x);        a[x]=x;    }    for(int i=0;i<maxn;i++)    {        if(a[i]!=i)        a[i]=a[i-1];    }    int ans=0;    for(int i=2;i<maxn;i++)    {        if(a[i]==i)        {            for(int j=i+i-1;j<maxn;j=j+i)            {                if(a[j]%i>ans&&a[j]>i)                ans=a[j]%i;            }        }    }    printf("%d\n",ans);    return 0;}</strong>


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn