P9301 [CCC 2023 J3] Special Event 题解

· · 题解

分析

我们建立一个结构体来存每一天的能够开会的人数和这一天是星期几。在计算出每一天的能够开会的人数后,我们将这个结构体按照人数降序排序。注意,在排序的时候,若这两天人数一样,我们要优先考虑靠前的。排完之后,先输出排在第一位是星期几,在看后面的是否与其人数相同即可。

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n;
char ch[1000][1000];
struct node{
    int ans,id;
}a[100000];
bool cmp(node a,node b)
{
    if(a.ans==b.ans) return a.id<b.id;
    else return a.ans>b.ans;
}
signed main()
{
    cin>>n;
    for(int i=1;i<=5;i++) a[i].id=i;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=5;j++)
            cin>>ch[i][j];
    for(int j=1;j<=5;j++)
        for(int i=1;i<=n;i++)
            if(ch[i][j]=='Y') a[j].ans++;
    sort(a+1,a+5+1,cmp);
    cout<<a[1].id;
    for(int i=2;i<=5;i++)
        if(a[i].ans==a[1].ans) cout<<","<<a[i].id;
}

注:要注意输出哦。