Cod sursa(job #478733)
#include<fstream>
#include<tr1/unordered_set>
using namespace std;
using namespace tr1;
const char iname[]="amlei.in";
const char oname[]="amlei.out";
ifstream f(iname);
ofstream g(oname);
int n,x,y,i,j,t,rez,v;
unordered_set<long long> H;
long long aux;
int main()
{
while(1)
{
f>>n;
if(f.eof())
break;
f>>x>>y;
H.clear();
for(i=1,aux=0;i<=x;H.insert(aux),aux=0,++i)
for(j=1;j<=n;++j)
f>>v,aux+=(v>0?(1LL<<v):0);
rez=1;
for(i=1,aux=0;i<=y;aux=0,++i)
{
for(j=1;j<=n;++j)
f>>v,aux+=(v>0?(1LL<<v):0);
if(H.find(-aux)==H.end())
if(H.find(aux)==H.end())
rez=0;
else
H.erase(aux),H.insert(-aux);
}
for(unordered_set<long long>::iterator it=H.begin();it!=H.end();++it)
if(*it>0)
rez=0;
if(rez)
g<<"DA\n";
else
g<<"NU\n";
}
}