n个数,p个操作,1 p x 将a[p]变为x,2 x将所有小于x的数变为x,输出最后结果。
逆向遍历一遍操作就好啦。
#include<bits/stdc++.h>
using namespace std;int main()
{int n;cin>>n;vector<int>a(n);for(int i=0;i<n;i++)cin>>a[i];int tt;cin>>tt;vector<int>op(tt);vector<int>who(tt);vector<int>val(tt);for(int i=0;i<tt;i++){cin>>op[i];if(op[i]==1){cin>>who[i]>>val[i];--who[i];}if(op[i]==2)cin>>val[i];}vector<int>res(n,-1);int mx=-1;for(int i=tt-1;i>=0;i--){if(op[i]==1){if(res[who[i]]==-1){res[who[i]]=max(val[i],mx);} }else mx=max(mx,val[i]);}for(int i=0;i<n;i++){if(res[i]==-1)res[i]=max(a[i],mx);}for(int i=0;i<n;i++){if(i>0)cout<<" ";printf("%d",res[i]);}
}