⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2963418_ac_0ms_176k.cpp

📁 北大大牛代码 1240道题的原代码 超级权威
💻 CPP
字号:
#include <stdio.h>
#include <iostream>
#include <list>
#include <string>
#include <algorithm>

using namespace std;

struct node
{
	int id;
	int len;
};

int main()
{
	int s, l, id, cas = 1;
	int mark[101];
	string op;
	list <node> bshelf;
	list <node> ::iterator iter;
	int len;
	node t;

	while(scanf("%d",&s)==1&&s!=-1)
	{
		
		bshelf.clear();
		len = s;
		memset(mark,0,sizeof(mark));
		while(1)
		{
			cin>>op;
			if(op=="E")
				break;
			if(op=="R")
			{
				cin>>id;
				if(mark[id]==1)
				{
					mark[id] = 0;
					for(iter = bshelf.begin(); iter!=bshelf.end(); ++iter)
					{
						if((*iter).id==id)
						{
							len += (*iter).len;
							bshelf.erase(iter);
							break;
						}
					}
				}
			}
			else
			{
				cin>>id>>l;
				t.id = id;
				t.len = l;
				len -= l;
				bshelf.push_front(t);
				mark[id] = 1;
				while(len<0)
				{
					iter = bshelf.end();
					iter--;
					len += (*iter).len;
					mark[(*iter).id] = 0;
					bshelf.pop_back();
				}
			}
		}
		printf("PROBLEM %d:",cas++);
		if(!bshelf.empty())
		{
			for(iter = bshelf.begin(); iter != bshelf.end(); ++iter)
			{
				printf(" %d",(*iter).id);
			}
		}
		printf("\n");
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -