2050 百团大战

描述

   明天(周三),千呼万唤始出来的北航社团招新沙河站就要开始啦~~同样在为这个事儿而忙碌的lcl也想起了自己当年围观社团招新的往事……

   本着勇于尝试的思想,lcl加入了很多个社团,但是过了一段时间以后,她悲剧的发现很多社团的活动时间是冲突的,有的甚至很严重,这让她头痛不已,甚至必须要做出取舍。
   现在lcl列出了她的一周七天的空余时间表(0为有空,反之为1),和每个社团的活动时间,社团的活动时间按它们对于lcl的重要性排列,重要性低的社团如果和重要性高的发生时间冲突,就只能被悲剧的舍去了。

   已知lcl一周七天的空余时间表如下:
   日期      1 2 3 4 5 6 7
   是否空余  1 0 0 0 1 0 0

   现在lcl想知道,她到底能没有冲突的加入多少个社团呢?

输入

  包括多组数据。

  对于每组数据:
     第一行:包括一个整数n(0<n<=100),代表lcl原本想要加入的社团数;
     第二行,包括n个整数,依次代表这n个社团的活动时间,活动时间已按重要性从高到低排列,假设每个社团只活动一天。

输出


  对于每组数据:
   第一行:输出一个整数m,代表lcl在没有冲突的情况下加入的社团数。
   第二行:包括m个整数,依次代表lcl最终加入社团的序号,按升序排列,两两之间以空格隔开。

样例输入
3
1 2 2
7
1 2 3 4 5 6 7
样例输出
1
2
5
2 3 4 6 7


简单的模拟题

#include <stdio.h>
int main()
{
 int n;
 int a[9];
 int b[102];
 int sum;
 int i;
 
 while(scanf("%d",&n)!=EOF)
 {
  
  sum=0;
  int t;
 a[1]=1;
 a[2]=0;
 a[3]=0;
 a[4]=0;
 a[5]=1;
 a[6]=0;
 a[7]=0;
 for ( i=1;i<=n;i++)
 b[i]=0;
  for(i=1;i<=n;i++)
  {
   scanf("%d",&t);
   if ( a[t]!=1 )
   {
        a[t]=1;
        sum++;
        b[i]=1;
   }
   
  }
  printf("%d\n",sum);
  for(i=1;i<=n;i++)
  {
   if ( b[i]==1)
   printf("%d ",i);
  }
  printf("\n");
}
 
 return 0;
}


你可能感兴趣的:(活动)