Codeforces Round #593 DIV2 E問題 (2000pt)
Problem description
省略
省略
C++に変換後のコードはこちら
//no-unlocked
int N, M, A[1d5];
int arr[1d5], dp[4d5];
int lf[1d5], rg[1d5];
{
int geta, mx;
ll res = 0;
rd(N,M,(A--)(M));
if(N==1) wt(0), return 0;
geta = M + 10;
mx = geta + N + M + 10;
rep(i,M) arr[i] = A[i] - i - 1 + geta;
rep(i,mx) dp[i] = 0;
rrep(i,M) dp[arr[i]] >?= dp[arr[i]-1] + 1;
rep(i,N) rg[i] = min(N-1, i + M + 1 - dp[i+geta]);
rep(i,M) arr[i] = A[i] + i + 1 + geta;
rep(i,mx) dp[i] = 0;
rrep(i,M) dp[arr[i]] >?= dp[arr[i]+1] + 1;
rep(i,N) lf[i] = max(0, i - M - 1 + dp[i+geta]);
rep(i,N) res += rg[i] - lf[i] + 1;
wt(res);
}
Current time: 2024年03月28日20時50分55秒
Last modified: 2019年11月02日03時42分22秒 (by laycrs)
Tags: Competitive_Programming_Incomplete Codeforces CF593 CF_Div2_E
トップページに戻る
Logged in as: unknown user (not login)