缺勤人数<中国地质大学第5届程…

来源:互联网 发布:手机便签软件 编辑:程序博客网 时间:2024/04/28 12:34

Description

游泳馆建成,CUGB开设游泳课,期盼已久的同学们兴奋不已,可惜只有不多于300人的课容量。
刚一开始,都觉得室内游泳非常新鲜,非常有趣。然而上课确是一件很无聊的事。
于是乎,开始有了逃课,于是乎,开始有了万恶的点名。
由于300人的课容量还是非常可观的,单单靠人工很容易出现纰漏。现在请你编写一个程序来计算缺勤人数,并且告诉老师有谁缺勤


Input

输入两个整数n,m。分别表示总人数和来上课的人数(0<=m<=n<=300)。
接下来n行,每行两个字符串,前一个表示学生姓名(少于100个字符),第二个表示学号(学号为7位数)。学生姓名可以有相同的但是学号不会相同。名字只有小写字母,学号中没有空格。
接下来m行,每行也是两个字符串,和前面n行输入格式一样。


Output

输出缺勤人数k。
接下来k行,每行输出一个缺勤的人的姓名和学号,学号保留7位数字。
先按名字的字典序从小到大输出,如果名字相同,则按学号从小到大输出。


Sample Input


4 3
using 0000123
using 0002323
using 0000111
using 0000099
using 0000099
using 0000111
using 0000123


Sample Output


1
using 0002323

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
struct stu
{
    stringname;
    stringnum;
    boolflag;
} s[400];
bool f(stu a,stu b)
{
    if(a.name< b.name)return true;
    elseif((a.name == b.name)&&(a.num< b.num))return true;
   else    
    returnfalse;
}

int main()
{
   
    intn,m;
   cin>>n>>m;
    inti,j;
   for(i=0;i<n;i++)
    {
       cin>>s[i].name>>s[i].num;
       s[i].flag = false;
    }
   for(i=0;i<m;i++)
    {
       string name,num;
       cin>>name>>num;
       for(j=0;j<n;j++)
       {
           if(s[j].num == num)
           {
               s[j].flag = true ;
           }
       }
    }
   sort(s,s+n,f);
   cout<<n-m<<endl;
   for(i=0;i<n;i++)
    {
       if(s[i].flag ==false)
       {
           cout<<s[i].name<<""<<s[i].num<<endl;
       }
    }

}

0 0
原创粉丝点击