- Quiz
- AC
- 問題解説
- 1番目に1番の投稿、2番目に2番の投稿、... と最初なっている
- 各投稿に「いいね」が付くと、その投稿は1つ上の表示になる
- M個のLikeの処理後、各投稿の位置の最小値と最大値を答えよ
- 解法
- 普通の配列はA[i] = 123; のようにindex => valという対応を持っているが、valからindexを逆引きできる配列も用意しておく
- あとは普通に実装するのみ(difficulty 1400ないだろ...)
int main(){
cin.tie(0);
ios::sync_with_stdio(false);
ll N,M;
cin>>N>>M;
VI A(N);
VI I(N);
VI MA(N);
VI MI(N);
rep(i,N){
A[i]=i;
I[i]=i;
MA[i]=i;
MI[i]=i;
}
while(M--){
ll a;cin>>a;
a--;
ll idx=I[a];
if(idx==0){
}else{
ll b = A[idx-1];
A[idx-1] = a;
A[idx] = b;
I[a] = idx-1;
chmax(MA[a], idx-1);
chmin(MI[a], idx-1);
I[b] = idx;
chmax(MA[b], idx);
chmin(MI[b], idx);
}
}
rep(i,N){
ll ma = MA[i]+1;
ll mi = MI[i]+1;
p2(mi,ma);
}
return 0;
}