社区讨论

40pts求助(悬赏一个关注)

B4319[语言月赛 202504] 礼堂预约参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mkgmznoy
此快照首次捕获于
2026/01/16 16:48
2 个月前
此快照最后确认于
2026/01/18 19:55
2 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int d[1100000][4],a[5100],b[5100],c[5100],n,x,p1,p2;
char s,t;
int date(int x)
{
	x++;
	int y,m,d;
	d=x%100;
	m=x/100%100; 
	y=2000+x/10000;
	int t;

	if(m==2)//2月特判
    {
		if(y%4==0&&y%100!=0||y%400==0)
		{
			t=29;
		}
		else
		{
			t=28;
		}
	}
	else
	{
		if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
		{
			t=31;
		}
		else
		{
			t=30;
		}
	}
	x=y*10000+m*100+d;
	x%=10000000;
	return x;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>s>>x>>t;
    	if(s=='O')
    	{
    		a[i]=3;
    	}
    	else if(s=='C')
    	{
    		a[i]=2;
    	}
    	else if(s=='P')
    	{
    		a[i]=1;
    	}
    
    	if(t=='M')
    	{
    		c[i]=1;
    	}
    	if(t=='A')
    	{
    		c[i]=2;
    	}
    	if(t=='E')
    	{
    		c[i]=3;
    	}
    	b[i]=x%10000000;
    	bool f=false;
    	p1=i;
    	p2=0;
    	while(f==false)
    	{
    		if(d[b[p1]][c[p1]]==0)
    		{
    			d[b[p1]][c[p1]]=p1;
    			f=true;
    		}
    		else
    		{
    			p2=d[b[p1]][c[p1]];
    			if(a[p1]>a[p2]||(a[p1]==a[p2]&&p1<p2))
    			{
    				d[b[p1]][c[p1]]=p1;
    				p1=p2;
    			}
    			b[p1]=date(b[p1]);
    		}
    	}
    }	
	for(int i=1;i<=n;i++)
	{
		cout<<b[i]+20000000<<"\n";
	}
	return 0;
}

悬赏一个关注

回复

1 条回复,欢迎继续交流。

正在加载回复...