結果
問題 | No.2930 Larger Mex |
ユーザー |
![]() |
提出日時 | 2024-10-12 15:08:11 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 333 ms / 2,000 ms |
コード長 | 1,200 bytes |
コンパイル時間 | 842 ms |
コンパイル使用メモリ | 83,940 KB |
実行使用メモリ | 8,268 KB |
最終ジャッジ日時 | 2024-10-12 15:08:34 |
合計ジャッジ時間 | 17,390 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 50 |
ソースコード
#include <iostream> #include <string> #include <algorithm> #include <functional> #include <vector> #include <stack> #include <queue> #include <set> #include <map> #include <tuple> #include <cstdio> #include <cmath> #include <cassert> #define rep(i, n) for(i = 0; i < n; i++) #define int long long using namespace std; int n, m; int a[200000]; int cnt[200001], oncnt = 0; int imos[200001]; signed main() { int i, j; cin >> n >> m; rep(i, n) cin >> a[i]; if (m == 0) { for (int i = n; i >= 1; i--) { cout << i << endl; } return 0; } j = 0; rep(i, n) { for (; j < n; j++) { if (oncnt >= m) break; cnt[a[j]]++; if (cnt[a[j]] == 1 && a[j] < m) oncnt++; } if (oncnt >= m) { //cout << i << ", " << j << ", oncnt: " << oncnt << endl; imos[j - i]++; imos[n - i + 1]--; //cout << "j - i: " << j - i << endl; } cnt[a[i]]--; if (cnt[a[i]] == 0 && a[i] < m) oncnt--; } for (i = 0; i < n; i++) imos[i + 1] += imos[i]; for (i = 1; i <= n; i++) { cout << imos[i] << endl; } return 0; }