使用了tuple,但这么使用的话,只能符合前25%的数据,即m小于等于10000
#include <bits/stdc++.h>
#include <tuple>
using namespace std;
const int MAXN = 1e4 + 1;
// 数组下标代表标号,tuple三个数分别代表储存的值,上次访问的程序id,现在此空间的状态(为0则任何程序可访问)
tuple<int,int,int> a[MAXN];
int main()
{
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
while(k--)
{
int ope,id,l,r,x;
scanf("%d",&ope);
if(ope == 0)
{
scanf("%d%d%d%d",&id,&l,&r,&x);
int ans = -1;
for(int j = l; j <= r; j++)
{
int tmp = get<2>(a[j]);
if(tmp == 0 || tmp == id)
{
get<0>(a[j]) = x;
get<1>(a[j]) = (get<2>(a[j]) = id);
ans = j;