Riesco a risolvere tutti i test case tranne il secondo caso di esempio che, eseguito in locale, produce risultati palesemente errati.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int spam;
int leg;
int bw;
char b[1000][1000];
int gw;
char g[1000][1000];
int e;
void valuta(int lunghezza)
{
int l=1;
int s=1;
int i;
int j;
char temp[50];
for(j=0; j<lunghezza; j++)
{
scanf("%s", temp);
for(i=0; i<bw && s; i++)
{
if(!strcmp(temp, b[i]))
s=0;
}
for(i=0; i<gw && l; i++)
{
if(!strcmp(temp, g[i]))
l=0;
}
}
if((!l) && (!s))
return;
else
if(!l)
leg++;
else
spam++;
}
main()
{
freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
int i;
scanf("%d", &bw);
for(i=0; i<bw; i++)
scanf("%s", b[i]);
scanf("%d", &gw);
for(i=0; i<gw;i++)
scanf("%s", g[i]);
scanf("%d", &e);
int temp;
for(i=0; i<e; i++)
{
scanf("%d", &temp);
valuta(temp);
}
printf("%d %d", spam, leg);
}