
Problem - C - Codeforces
在刚刚结束的cf比赛中,我挂在TC,赛时调了1个小时仍未 hack 自己,求hack(死的不明不白
#include <bits/stdc++.h>
#define int long long
#define pii pair<int,int>
#define fi first
#define se second
#define ull unsigned long long
#define pb push_back
using namespace std;
int _,n,k,q,a[110],vis2[110];
struct que{
int c,l,r;
}ask[110];
signed main() {
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin >> _;
while(_--){
cin >> n >> k >> q;
for(int i = 1;i <= n;i ++) a[i]=k,vis2[i]=0;
for(int i = 1;i <= q;i ++){
cin >> ask[i].c >> ask[i].l >> ask[i].r;
if(ask[i].c==1){
for(int j = ask[i].l;j <= ask[i].r;j ++){
vis2[j]=1;
}
}
}
for(int i = 1;i <= q;i ++){
if(ask[i].c==2){
int vis[k],s=k+1;
for(int j = 0;j < k;j ++) vis[j]=0;
for(int j = ask[i].l;j <= ask[i].r;j ++){
if(a[j]<k) vis[a[j]]=1;
}
for(int j = 0;j < k;j ++){
if(vis[j]==0){
s=j;
break;
}
}
for(int j = ask[i].l;j <= ask[i].r;j ++){
if(a[j]<k) continue;
if(vis2[j]==1){
a[j]=k+1;
continue;
}
a[j]=s;
if(s<k) vis[s]=1;
while(s < k && vis[s]){
s++;
}
if(s==k) s++;
}
}
}
for(int i = 1;i <= n;i ++) cout << a[i] << " ";
cout << "\n";
}
return 0;
}