結果
問題 |
No.2930 Larger Mex
|
ユーザー |
|
提出日時 | 2024-10-14 14:22:08 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 433 ms / 2,000 ms |
コード長 | 1,007 bytes |
コンパイル時間 | 2,387 ms |
コンパイル使用メモリ | 205,524 KB |
最終ジャッジ日時 | 2025-02-24 19:29:51 |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 50 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll = long long; #include<atcoder/modint> using namespace atcoder; using mint = modint998244353; void solve() { int N,M; cin>>N>>M; if(M==0){ while(N--){ cout<<N+1<<endl; } return; } vector<int> A(N),AN(N+2,0); for(int i=0;i<N;i++)cin>>A[i]; vector<int> cnt(2e5+1,0); set<int> OK; deque<int> D; int R=0; for(int i=0;i<N;i++){ while(OK.size()<M&&R<N){ cnt[A[R]]++; if(A[R]<M&&cnt[A[R]]==1){ OK.insert(A[R]); } R++; } if(OK.size()==M){ AN[R-i]++; AN[N-i+1]--; } cnt[A[i]]--; if(A[i]<M&&cnt[A[i]]==0)OK.erase(A[i]); } for(int i=0;i<N;i++)AN[i+1]+=AN[i]; for(int i=1;i<=N;i++)cout<<AN[i]<<endl; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); // ll T; // cin>>T; // while(T--) solve(); }