In primul rand, felicitari ambilor participanti.
Am testat ambele programe. Din pacate, doar programul lui AndrewBoy functioneaza corect. Sursa - folosind hashtables:
#include<stdio.h>
int n,x,i,j;
long long val,hv;
void read(),solve();
struct hs{int vv,mm;hs *next;};
hs *ht[99991],*paux;
int main()
{
freopen("c28i.in","r",stdin);
freopen("c28i.out","w",stdout);
read();
solve();
fclose(stdin); fclose(stdout);
return 0;
}
void read()
{
scanf("%d",&n);
for(i = 1;i <= n;i++)
{
scanf("%lld",&val);
hv=val%99991;
for(paux = ht[hv];paux;paux = paux->next)
if(paux->vv == val)
{ paux->mm++;break; }
if(!paux)
{
paux = new hs;
paux->vv = val;
paux->mm = 1;
paux->next = ht[hv];
ht[hv] = paux;
}
}
}
void solve()
{
scanf("%d",&x);
int ok;
for(i = 1; i <= x; i++)
{
scanf("%lld",&val);
hv = val % 99991;
ok = 0;
for(paux = ht[hv];paux;paux = paux->next)
if(paux->vv == val)
{
if(paux->mm == 1) printf("1"),ok = 1;
else printf("2"),ok = 1;
}
if(!ok && !paux) printf("0");
}
printf("\n");
}
Sursa lui tercot nu am reusit sa o gasesc.
O alta posibila rezolvare era sortarea numerelor, dupa care folosirea cautarii binare.
Castigatorul este, desigur, AndrewBoy.
Bafta

.