• Maximum Value(CodeForces


    Maximum Value

    Time limit 1000 ms

    Memory limit 262144 kB

    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.

    Example

    Input
    3
    3 4 5
    Output
    2

    题意:求aj%ai的最大值,其中j>i;
    分析:每次寻找小于k*aj的最大值,类似于素数筛,例如n=5时,3 4 5 6 7 ,我们如果查找对3取模的最大值,毫无疑问就是找到3到2*3中间的最大值;

    AC代码:
    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    #define N 2*100000+10
    const int maxn=1000000+10;
    typedef long long ll;
    using namespace std;
    int a[N];
    int n;
    int C(int x){
        int w=x,ans=0;
        while (w<a[n-1]){
           w+=x;
           int k=lower_bound(a,a+n,w)-a;
           if (k==0) continue;
           else k--;
           if (a[k]<=x) continue;
           ans=max(ans,a[k]%x);
        }
        return ans;
    }
    int main(){
        ios::sync_with_stdio(false);
        int ans=0;
        scanf("%d",&n);
        for (int i=0;i<n;i++)  scanf("%d",&a[i]);
        sort(a,a+n);
        for (int i=n-1;i>=0;i--){
             if (i<n-1&&a[i]==a[i+1])
              continue;
             if (ans>=a[i]-1)
               break;
             ans=max(ans,C(a[i]));
        }
       printf("%d
    ",ans);
        return 0;
    }
     
  • 相关阅读:
    20181205关于android动态权限管理的总结与思考。
    pixel2坑
    Picasso遇到的坑
    集成主流框架搭建项目
    outdoor-youwin
    利用scatter()绘制颜色映射的二次方曲线
    一个有意义的Day类
    [Hadoop] Yarn & k8s
    hadoop 操作
    yarn 图形化监控
  • 原文地址:https://www.cnblogs.com/lisijie/p/8424744.html
Copyright © 2020-2023  润新知