在IDE上运行正常但在提交

时间:2015-07-23 14:56:21

标签: c

https://www.codechef.com/problems/CLEANUP/

在为宴会准备食物的漫长而成功的一天之后,是时候清理了。在厨房关闭之前,有一份工作清单要做。这些作业的索引从1到n。

大多数厨师已经离开,只有厨师和他的助手才能清理干净。值得庆幸的是,一些厨师在他们离开之前处理了一些工作,因此只剩下n个工作的一部分。厨师和他的助手以下列方式分配剩余的工作。厨师以最少的索引完成未完成的工作,助理以第二最少的索引完成未完成的工作,厨师用未完成的工作获得第三个最小索引,等等。即,如果未完成的工作按其增加的顺序列出然后,Chef将从列表中的第一个作业开始,每个其他一个,并且助理将从列表中的第二个作业开始接受每个其他一个。

厨师记录了他们离开之前完成的工作。不幸的是,这些工作没有按任何特定顺序记录。给出一个未排序的列表 完成的工作,你要确定厨师必须完成哪些工作,以及在关闭厨房之前他的助手必须完成哪些工作 晚间。 输入

第一行包含一个整数T≤50,表示要遵循的测试用例数。每个测试用例包含两行。第一行包含两个数字n,m满足0≤m≤n≤1000。这里,n是关闭前必须完成的作业总数,m是已经完成的作业数。第二行包含1和n之间的m个不同整数的列表。这些是已经完成的工作的指数。连续的整数由单个空格分隔。 输出

每个测试用例的输出包含两行。第一行是分配给Chef的作业索引列表。第二行是分配给他的助手的工作索引列表。两个列表必须以索引的递增顺序出现,并且连续的整数应该由单个空格分隔。如果未为Chef或助手分配任何作业,则其对应的行应为空白。 实施例

输入:

3
6 3
2 4 1
3 2
3 2
8 2
3 8

输出:

3 6
5
1

1 4 6
2 5 7

代码:

#include<stdio.h>
int main() {
    int t=0,n=0,m=0,i=0,count=0,val=0,j=0;
    int arr[100]={0};
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        scanf("%d",&m);
        for(i=0;i<m;i++)
        {
           scanf("%d",&arr[i]);
        }

        val=0;
        for(i=1;i<=n;i++)
        {
               count=0;
             for(j=0;j<m;j++)
             {
                 if(i==arr[j])
                 {
                     count=1;
                     break;
                 }
             }
             if(count==0)
             {
                 val=val+1;
                 if(val%2!=0)
                 printf("%d ",i);
             }
        }
        printf("\n");
        val=0;
        for(i=1;i<=n;i++)
        {
               count=0;
             for(j=0;j<m;j++)
             {
                 if(i==arr[j])
                 {
                     count=1;
                     break;
                 }
             }
             if(count==0)
             {
                 val=val+1;
                 if(val%2==0&&val!=0)
                 printf("%d ",i);
             }
        }
        printf("\n");
    }
    return 0;
}  

在IDE上正常运行但是给出了 提交时的运行时错误(SIGSEGV)..请帮助

1 个答案:

答案 0 :(得分:1)

  

第一行包含两个数字nm满足0 ≤ m ≤ n ≤ 1000

这向我表明

int arr[100]={0};

不适用于所有测试用例。将其更改为:

int arr[1000]={0};