GDUFE ACM-1070

题目:http://acm.gdufe.edu.cn/Problem/read/id/1070

上班打卡

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

     某公司上班使用打卡制度,员工需要在打卡机器上打入和打出才算上班。每个员工都有自己对应编号K,编号为一个整数(1 <= K <=50000),某天有一员工忘记了一次打出。现在给你当天员工的打卡信息,你能找出该员工的编号吗?

Input:

输入包含多组测试,第一行包含数字N,表示公司的人数(1<=N<=50000)。第二行有2N-1个数,两两之间有空格,表示所有员工的打卡记录。输入N为0则退出程序,不做输出。

Output:

对于每组测试,单独一行输出忘记打卡员工的编号。

Sample Input:

4
10 12 9 12 250 9 10

Sample Output:

250

思路:原本想了两种方法都超时了。。。这个是使用两个数组,员工打卡一次,对应序号+1,结束后如果数组中某元素为1,则对应序号的员工忘记打卡了

难度:容易超时,有难度

代码:
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n,a[100000],i,j;
 5     int b[50000]={0};
 6     while(~scanf("%d",&n))
 7     {
 8         if(n==0) break;
 9         for(i=0;i<2*n-1;i++)
10             {
11                 scanf("%d",&a[i]);
12                 j=a[i]-1;
13                 b[j]++;
14             }
15         for(i=0;i<50000;i++)
16             if(b[i]==1)
17         {
18             printf("%d
",i+1);
19             break;
20         }
21     }
22     return 0;
23 }
原文地址:https://www.cnblogs.com/ruo786828164/p/6009229.html