codeforces xxx d

因为要早睡所以赛后做

这个题挺有意思 nlgn的算法

bool v[2111111];  
int pre[2111111];  
int a[222222];  
int n;  
int main() {  
    scanf("%d", &n);  
    for(int i = 0; i < n; i++) {  
        scanf("%d", &a[i]);  
        v[a[i]] = 1;  
    }  
    int mx = 2000005;  
    for(int i = 1; i < mx; i++) {  
        pre[i] = pre[i - 1];  
        if(v[i - 1]) pre[i] = i - 1;  
    }  
    int ans = 0;  
    for(int i = 1; i < mx; i++) {  
        if(!v[i]) continue;  
        for(int j = 2 * i; j < mx; j += i) {  
            ans = max(ans, pre[j] + i - j);  
        }  
    }  
    printf("%d\n", ans);  
    return 0;  
}  


你可能感兴趣的:(codeforces xxx d)