您的位置:首页 > 其它

codeforces 7B - Memory Manager

2013-05-30 21:02 239 查看
模拟操作系统的内存分配原理

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define M 100+5

int mem[M]; char s[15];

int t,m;

int check(int x,int c){

int i,j,f;

for(i=1;i<=m-x+1;i++){

f=0;

for(j=i;j<i+x;j++)

if(mem[j]!=0)f=1;

if(f==0){

for(j=i;j<i+x;j++)

mem[j]=c;

return 1;

}

}

return 0;

}

int main(){

int i,j,c,x,f;

while(~scanf("%d %d",&t,&m)){

c=1;

memset(mem,0,sizeof(mem));

while(t--){

scanf("%s",s);

if(s[0]=='a'){

scanf("%d",&x);

if(check(x,c)==1)printf("%d\n",c++);

else puts("NULL");

}else if(s[0]=='e'){

scanf("%d",&x);

if(x==0)puts("ILLEGAL_ERASE_ARGUMENT");

else{

f=0;

for(i=1;i<=m;i++)

if(mem[i]==x){

mem[i]=0;

f=1;

}

if(f==0)puts("ILLEGAL_ERASE_ARGUMENT");

}

}else if(s[0]=='d'){

i=j=1;

while(j<=m){

mem[i]=mem[j];

if(mem[i]!=0){

if(j>i)mem[j]=0;

i++;

}

j++;

}

}

}

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: