Codeforces Round #276 (Div. 1)B(暴力)

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
3
3 4 5
output
2

題意:RT

思路:可以用nearest[i]表示離i最近且比i小的數

            然後對於每個數x,暴力遍歷x*2,x*3,.....,x*k,這時nearest數組派上用場了,直接由nearest[x*k]%x取最大值即可

#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

const int MAXN = 2000010;
int has[MAXN];
int nearest[MAXN];

int main()
{
    int n;
    scanf("%d",&n);
    for(int i=0;i=i){
                mx=max(mx,nearest[j]%i);
            }
        }
    }
    printf("%d\n",mx);
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章