B. Maximum Value
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard outputYou 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;
}