[CF2157C] Meximum Array 2 题解
aeiouaoeiu · · 题解
翻译一下,
若只有
若只有
接下来尝试从
具体实现时,可以通过前缀和求出哪些点被
::::info[code]
#include<bits/stdc++.h>
#define pb emplace_back
#define pob pop_back
#define mp make_pair
using namespace std;
typedef long long ll;
typedef double db;
typedef unsigned long long ull;
const ll maxn=100007,ee=1e18;
ll n,k,q,su[maxn],a[maxn];
vector<pair<ll,ll> > vec;
int main(void){
//freopen("data.in","r",stdin);
//freopen("data.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
ll T=1; cin>>T;
for(;T--;){
cin>>n>>k>>q,vec.clear();
for(ll i=1;i<=n;i++) su[i]=0,a[i]=k;
for(ll i=1,c,l,r;i<=q;i++){
cin>>c>>l>>r;
if(c==1) su[l]++,su[r+1]--;
else vec.pb(l,r);
}
for(ll i=1;i<=n;i++) su[i]+=su[i-1];
for(ll i=1,cur=0;i<=n;i++)if(!su[i]) a[i]=cur,cur=(cur+1)%k;
for(auto x:vec){
for(ll i=x.first;i<=x.second;i++)if(su[i]) a[i]=1e9;
}
for(ll i=1;i<=n;i++) cout<<a[i]<<" "; cout<<"\n";
}
return 0;
}
::::