WA 8 个点求助
查看原帖
WA 8 个点求助
637796
Xy_top楼主2024/1/27 17:06
#include <iostream>
#define For(i, a, b) for (int i = (a); i <= (b); i ++)
#define foR(i, a, b) for (int i = (a); i >= (b); i --)
#define int long long
using namespace std;
int n, m, k, ans, cnt;
int b[400005], c[400005];
int b_[400005];
signed main () {
	cin >> n >> m >> k;
	For (i, 1, n) {
		cin >> c[i];
		++ b_[c[i] ];
	}
	For (i, 1, n) b_[c[i] ] = min (b_[c[i] ], k);
	For (i, n + 1, 2 * n) c[i] = c[i - n];
	int l = 1;
	For (i, 1, l + n) {
		if (cnt == m) {
			cout << ans << '\n';
			++ l;
			if (l == n + 1) break;
			-- b[c[l - 1] ];
			if (b[c[l - 1] ] == 0) {
				-- cnt;
				ans -= b_[c[l - 1] ];
			} else {
				-- i;
				continue;
			}
		}
		++ b[c[i] ];
		if (b[c[i] ] == 1) {
			++ cnt;
			ans += b_[c[i] ];
		}
		if (i == l + n - 1 && cnt != m) {
			For (j, 1, n) cout << ans << '\n';
			return 0;
		}
	}
	return 0;
}
2024/1/27 17:06
加载中...