Codeforces Round #FF (Div. 2) A. DZY Loves Hash

DZY has a hash table with p buckets, numbered from 0 to p - 1. He wants to insert n numbers, in the order they are given, into the hash table. For the i-th number xi, DZY will put it into the bucket numbered h(xi), where h(x) is the hash function. In this problem we will assume, that h(x) = x mod p. Operation a mod b denotes taking a remainder after division a by b.

However, each bucket can contain no more than one element. If DZY wants to insert an number into a bucket which is already filled, we say a "conflict" happens. Suppose the first conflict happens right after the i-th insertion, you should output i. If no conflict happens, just output -1.

Input

The first line contains two integers, p and n (2 ≤ p, n ≤ 300). Then n lines follow. The i-th of them contains an integer xi (0 ≤ xi ≤ 109).

Output

Output a single integer — the answer to the problem.

Sample test(s)
Input
10 5
0
21
53
41
53
Output
4
Input
5 5
0
1
2
3
4
Output
-1


注意数据范围p,m<=200,虽然输入的数据较大,刚开始自己mod1000000001,发现这不能有冲突了,并且还要标记下第一个发生冲突,以后的冲突可以忽略


#include<iostream>
#include<cstring>
#include<cstdio>
#include<string>
#include<cmath>
#include<algorithm>
#define LL int
#define inf 0x3f3f3f3f
using namespace std;
int ha[10002];
int bj;
int main()
{
    LL n,m,i,j,k,l;
    while(~scanf("%d%d",&n,&m))
    {
        bj=0;
        memset(ha,0,sizeof(ha) );
        for(i=1;i<=m;i++)
        {
            scanf("%d",&k);
            k=k%n;//对当前的输入值的个数进行%
            if(!ha[k])
            {
                ha[k]++;
            }
            else if(ha[k]!=0&&!bj  )//只取,符合条件的第一个<span id="transmark"></span>
            {
                bj=i;
            }
        }
        if(!bj)
        printf("-1\n");
        else printf("%d\n",bj);
    }
    return 0;
}




你可能感兴趣的:(哈兮)