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

📄 2502736_wa.cpp

📁 北大大牛代码 1240道题的原代码 超级权威
💻 CPP
字号:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

struct node
{
	int num;
	char style[2];
	char name[21];
	int year;
}pl[23];

int mark[10000];
char que[10];

bool Cmp(struct node a,struct node b)
{
	return a.num<b.num;
}

int main()
{
	int n, ynum;
	char tmp[10];
	int y1, y2;
	int out[11], no;
	int d, m, s, g;
	int D, M, S, G;

	while(cin>>n&&n)
	{
		g = 1;D = M = S = G = no = 0;
		for(int i = 0; i < 22; i++)
		{
			pl[i].num = n;
			cin>>pl[i].name>>pl[i].style;
			switch(pl[i].style[0])
			{
			case 'S': S++;break;
			case 'D': D++;break;
			case 'M': M++;break;
			default : G++;
			}
			memset(mark,0,sizeof(mark));
			ynum = 0;
			while(cin>>tmp&&strlen(tmp)>6)
			{
				y1 = atoi(tmp);
				y2 = atoi(&tmp[5]);
				while(y1<=y2)
				{
					if(mark[y1]==0)
						mark[y1] = 1,ynum++;
					y1++;
				}
			}
			pl[i].year = ynum;
			n = atoi(tmp);
		}
		d = n; m = tmp[2]-'0'; s = tmp[4]-'0';
		if(!G||d>D||m>M||s>S)
		{
			cout<<"IMPOSSIBLE TO ARRANGE"<<endl;
			continue;
		}
		int max = -1;
		sort(pl,pl+22,Cmp);
		if(g)
			for(i = 0; g&&i < 22; i++)
			{
				if(pl[i].style[0]=='G')
				{
					g--;
					out[no++] = i;
					if(max=-1||(pl[i].year>pl[max].year)||(pl[i].year==pl[max].year&&pl[i].num>pl[max].num))
						max = i;
				}
			}
		if(d)
			for(i = 0; d&&i < 22; i++)
			{
				if(pl[i].style[0]=='D')
				{
					d--;
					out[no++] = i;
					if(max=-1||(pl[i].year>pl[max].year)||(pl[i].year==pl[max].year&&pl[i].num>pl[max].num))
						max = i;
				}
			}
		if(m)
			for(i = 0; m&&i < 22; i++)
			{
				if(pl[i].style[0]=='M')
				{
					m--;
					out[no++] = i;
					if(max=-1||(pl[i].year>pl[max].year)||(pl[i].year==pl[max].year&&pl[i].num>pl[max].num))
						max = i;
				}
			}
		if(s)
			for(i = 0; s&&i < 22; i++)
			{
				if(pl[i].style[0]=='S')
				{
					s--;
					out[no++] = i;
					if(max=-1||(pl[i].year>pl[max].year)||(pl[i].year==pl[max].year&&pl[i].num>pl[max].num))
						max = i;
				}
			}
		cout<<pl[max].num<<" "<<pl[max].name<<" "<<pl[max].style<<endl;
		for(i = 0; i < no; i++)
			if(max!=out[i])
				cout<<pl[out[i]].num<<" "<<pl[out[i]].name<<" "<<pl[out[i]].style<<endl;
	}
	return 1;
}

⌨️ 快捷键说明

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