Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
74195 | 陈路垚 | 听音乐 | C++ | 通过 | 100 | 11 MS | 1760 KB | 844 | 2023-05-20 17:24:49 |
#include <stdio.h> #define N 100005 int n, m, i, j, k, p, ans, a[N], c[N], r[N]; int main() { scanf("%d%d", &n, &m); for (i = p = 1; i <= m; i++) { scanf("%d", &a[i]); if (++c[a[i]] > 1) { while (1) { r[p] = i; if (--c[a[p++]] == 1) { break; } } // 预处理从p往右扩展最远的位置 } } while (p < i) { r[p++] = i + n; } for (i = 0; i < n; i++) { if (r[1] - 1 < n - i) { continue; } for (j = n - i + 1; j <= m; j += n) { if (r[j] - j < n) { break; } } if (j > m) { ans++; } } printf("%d\n", ans); return 0; }