只得了25分。。。。。
#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9 + 10;
const int N = 1e4 + 10;
int n, m, k, a[N];
int vis[N];//访问数组
int last[N];//上次访问数组
void solve0(int id, int l, int r, int x)
{
for (int i = l; i <= r; i++)
{
//不被占用或者自己占用
if (!vis[i] || vis[i] == id )
{
vis[i] = id;
a[i] = x;
}
else//遇到占用了
{
if (i == l)//最左边都没访问到
cout << -1 << '\n';
else
cout << i - 1 << '\n';
return;
}
}
cout << r << endl;
}
void solve1(int id, int l, int r)
{
for (int i = l; i <= r; i++)
{
if (vis[i] == id)
{
continue;
}
else
{
cout << "FAIL" << '\n';
return;
}
}
for (int i = l; i <= r; i++)
{
last[i] = vis[i];
vis[i] = 0;
}
cout << "OK" << '\n';
}
void solve2(int id, int l, int r)
{
for (int i = l; i <= r; i++)
{
if ((vis[i]) || (!vis[i] && last[i] != id))
{
cout << "FAIL" << '\n';
return;
}
}
for (int i = l; i <= r; i++)
{
vis[i] = last[i];
}
cout << "OK" << '\n';
}
void solve3(int p)
{
if (vis[p])
cout << vis[p] << " " << a[p] << '\n';
else
cout << "0 0" << '\n';
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> n >> m >> k;
int a, b, c, d, f;
for (int i = 0; i < k; i++)
{
cin >> a;
if (a == 0)
{
cin >> b >> c >> d >> f;
solve0(b, c, d, f);
}
else if (a == 1)
{
cin >> b >> c >> d;
solve1(b, c, d);
}
else if (a == 2)
{
cin >> b >> c >> d;
solve2(b, c, d);
}
else if (a == 3)
{
cin >> b;
solve3(b);
}
}
return 0;
}