Maximum Value - CodeForces 484 B 水题

来源:互联网 发布:圈圈助手源码 编辑:程序博客网 时间:2024/05/29 11:34

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 by aj), 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
2


题意:找出ai%aj的值的最大值。

思路:排序后从小往大找,假设处理的是a,那么就找比a*2-1,a*3-1,a*4-1...小的最大值。

AC代码如下:

#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;int num[2000110],maxn=1000000;int main(){    int T,t,n,m,i,j,k,ans=0;    scanf("%d",&n);    for(i=1;i<=n;i++)    {        scanf("%d",&k);        num[k]=k;    }    for(i=1;i<=maxn*2+1;i++)       if(num[i]!=i)         num[i]=num[i-1];    for(i=2;i<=maxn;i++)       if(num[i]==i)       {           for(j=i*2;j<=maxn*2+1;j+=i)           {               if(num[j-1]>i)                 ans=max(ans,num[j-1]%i);           }       }    printf("%d\n",ans);}



0 0
原创粉丝点击