题解:CF2110F Faculty
不失一般性的,我们设
从最简单的情况考虑,当
由于
由
分析可知,当
接下来考虑对于任意前缀长度为
再由不等式可知存在
代码如下:
void solve ()
{
int n = read ();
vector <int> a (n + 1),ans (n + 1,0);
for (int i = 1;i <= n;++i) a[i] = read ();
int mx = a[1];
for (int i = 2;i <= n;++i)
{
if (a[i] > mx)
{
if (a[i] >= mx * 2) {for (int j = 1;j < i;++j) ans[i] = max (ans[i],a[i] % a[j] + a[j] % a[i]);}
else ans[i] = a[i];
mx = a[i];
}
else ans[i] = max (ans[i - 1],mx % a[i] + a[i] % mx);
}
for (int i = 1;i <= n;++i) printf ("%d ",ans[i]);
puts ("");
}