0
点赞
收藏
分享

微信扫一扫

CSP 202112-4 磁盘文件操作 25分

M4Y 2022-02-08 阅读 36
c++
#include <bits/stdc++.h>
using namespace std;
const int MAX_SIZE=1e7+10;
int n,m,k;
struct Node
{
    int num;
    int pre;//0 不被占用 1 被占用
    int owner;
}N[MAX_SIZE];

int main()
{
    std::ios::sync_with_stdio(false);
    cin>>n>>m>>k;
    for(int i=1;i<=m;i++)
    {
        N[i].num=0;
        N[i].owner=0;
    }

    while(k--)
    {
        int type;
        cin>>type;
        if(type==0)
        {
            int id,l,r,x;
            cin>>id>>l>>r>>x;
            int i;
            int res=r;
            for(i=l;i<=r;i++)
            {
                if(N[i].owner==0 || N[i].owner==id)
                {
                    N[i].num=x;
                    N[i].owner=id;
                }
                else
                {
                    res=i-1;
                    break;
                }
            }
            if(i==l)
                cout<<-1<<endl;
            else
                cout<<res<<endl;
        }
        if(type==1)
        {
            int id,l,r;
            cin>>id>>l>>r;
            int flag=0;
            for(int i=l;i<=r;i++)
            {
                if(N[i].owner!=id)
                {
                    flag=1;
                    break;
                }
            }
            if(flag==0)
            {
                for(int i=l;i<=r;i++)
                {
                    N[i].owner=0;
                    N[i].pre=id;
                }
                cout<<"OK"<<endl;
            }
            else
            {
                cout<<"FAIL"<<endl;
            }

        }
        if(type==2)
        {
            int id,l,r;
            cin>>id>>l>>r;
            int flag=0;
            for(int i=l;i<=r;i++)
            {
                if(N[i].owner!=0 || N[i].pre!=id)
                {
                    flag=1;
                    break;
                }
            }
            if(flag==0)
            {
                for(int i=l;i<=r;i++)
                {
                    N[i].owner=id;
                }
                cout<<"OK"<<endl;
            }
            else
            {
                cout<<"FAIL"<<endl;
            }
        }
        if(type==3)
        {
            int p;
            cin>>p;
            if(N[p].owner==0)
            {
                cout<<0<<" "<<0<<endl;
            }
            else
            {
                cout<<N[p].owner<<" "<<N[p].num<<endl;
            }
        }
    }
    return 0;
}

举报

相关推荐

0 条评论