📄 2503018_ac_0ms_248k.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;
cout<<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;
cout<<endl;
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -