1
已解决
李奕歌
初级天翼
初级天翼
题目描述 Description
酷町堂共有n个学生,现统计每位学生的出生年月日,试找出所有同年同月同日生的学生,并输出出来。
输入描述 Input Description
输入为n+1行:
第一行为酷町堂的学生数n(n≤100);
之后的n行为酷町堂学员的姓名以及出生年(其中年份在01年以后)、月、日,中间用单个空格隔开。
输出描述 Output Description
输出每一行为每一组生日相同的学生,其中前三个数字表示出生年、月、日,之后为生日相同的学生姓名。对于所有的输出,年月日按照从日历从前到后的顺序输出,对于生日相同的学生姓名,按照姓名从短到长的顺序输出,如果长度相同,则按照字典序输出。如果没有生日相同的学生,则输出“No”。
样例输入 Sample Input
6 Liudehua 05 3 2 Zhoujielun 05 4 5 Chenyixue 05 3 2 Huge 05 4 5 Liuyifei 05 3 2 Wanglihong 06 3 2
样例输出 Sample Output
05 3 2 Liudehua Liuyifei Chenyixue 05 4 5 Huge Zhoujielun
WA 50:
#include"bits/stdc++.h"
using namespace std;
struct abab{
string n,y,m,d;
}a[105];
bool cmp(abab a,abab b){
if(a.y!=b.y)return a.y<b.y;
if(a.m!=b.m)return a.m<b.m;
if(a.d!=b.d)return a.d<b.d;
if(a.n.size()!=b.n.size())return a.n.size()<b.n.size();
return a.n<b.n;
}
bool check(int x){
if(a[x].y==a[x+1].y&&a[x].m==a[x+1].m&&a[x].d==a[x+1].d){
return true;
}
return false;
}
bool f=0;
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].n>>a[i].y>>a[i].m>>a[i].d;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
if(check(i)){
cout<<a[i].y<<" "<<a[i].m<<" "<<a[i].d<<" "<<a[i].n;
f=1;
while(check(i)){
i++;
cout<<" "<<a[i].n;
}
cout<<endl;
}
if(f==0)cout<<"No";
}
return 0;
0
0
王文博
缔造者之神
缔造者之神
#include <bits/stdc++.h>
using namespace std;
int n,t,b[30001],k,cnt;
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>t;
b[t]++;
}
for(int i=1;i<=30000;i++)
{
if(b[i]!=0) cnt++;
if(cnt==k)
{
cout<<i;
return 0;
}
}
cout<<"NO RESULT";
}
0