#include<bits/stdc++.h>
#include<sstream>
using namespace std ;
typedef long long ll ;
int main()
{
ll n ;
bool ok=true;
map<string,ll>var,mp;
map<string,string>rep ;
vector<string>b,b1,a,a1;
cin >> n ;
for(ll i=1;i<=1000;i++)
{
ostringstream s;
s<<i;
string s1=s.str();
var[s1]++;
}
for(ll i=0;i<n;i++)
{
string s;
cin >> s ;
a.push_back(s) ;
a1.push_back(s) ;
rep[s]=s;
}
for(ll i=0;i<n;i++)
{
string s;
cin >> s ;
b.push_back(s) ;
b1.push_back(s) ;
rep[s]=s;
}
for(ll h=0;h<2;h++)
{
for(ll i=0;i<n;i++)
{
if(var[a[i]]>0)
{
if(var[b[i]]>0)
{
// to be a[i] and b[i] is integer
if(a[i]!=b[i])
ok=false ;
}
else
{
// to be a[i] is an integer and b[i] is a variable
b[i]=rep[b[i]] ;// if there is a variable that must be equal to him
ll num=0,pw=1;
for(ll j=a[i].size()-1;j>=0;j--)
{
num+=int(a[i][j]-'0')*pw;
pw*=10;
}
if(mp[b[i]]==0)
{
mp[b[i]]=num;
//cout<<num<<endl;
}
else
{
if(mp[b[i]]!=num)
ok=false ;
//cout<<num<<" "<<mp[b[i]]<<endl;
}
}
}
else
{
if(var[b[i]]>0)
{
a[i]=rep[a[i]] ;
ll num=0,pw=1;
for(ll j=b[i].size()-1;j>=0;j--)
{
num+=int(b[i][j]-'0')*pw;
pw*=10;
}
if(mp[a[i]]==0)
{
mp[a[i]]=num;
}
else
{
if(mp[a[i]]!=num)
ok=false ;
}
}
else //both of them are variable
{
string s1=a[i],s2=b[i];
b[i]=rep[b[i]] ;
a[i]=rep[a[i]] ;
if(mp[a[i]]==0&&mp[b[i]]!=0)
{
rep[a[i]]=b[i] ;
rep[s1]=b[i];
}
else if(mp[b[i]]==0&&mp[a[i]]!=0)
{
rep[b[i]]=a[i] ;
rep[s2]=a[i] ;
}
else if(mp[b[i]]==0&&mp[a[i]]==0)
{
rep[b[i]]=a[i] ;
rep[s2]=a[i] ;
}
else if(mp[b[i]]!=mp[a[i]])ok=false;
}
}
}
}
/*for(ll i=0;i<n;i++)
{
if(var[a1[i]]==0)
{
cout<<rep[a1[i]]<<" ";
}
else cout<<a1[i]<<" ";
}
cout<<endl;
for(ll i=0;i<n;i++)
{
if(var[b1[i]]==0)
{
cout<<rep[b1[i]]<<" ";
}
else cout<<b1[i]<<" ";
}
*/
if(ok)cout<<"DA"<<endl;
else cout<<"NE"<<endl;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
1 ms |
340 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Correct |
1 ms |
340 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
1 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Incorrect |
1 ms |
340 KB |
Output isn't correct |
5 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
672 KB |
Output is correct |
2 |
Correct |
4 ms |
596 KB |
Output is correct |
3 |
Correct |
13 ms |
1236 KB |
Output is correct |
4 |
Correct |
15 ms |
1428 KB |
Output is correct |
5 |
Correct |
13 ms |
1516 KB |
Output is correct |
6 |
Correct |
13 ms |
1236 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
49 ms |
3200 KB |
Output is correct |
2 |
Correct |
102 ms |
6616 KB |
Output is correct |
3 |
Correct |
218 ms |
10784 KB |
Output is correct |
4 |
Correct |
236 ms |
12648 KB |
Output is correct |
5 |
Correct |
470 ms |
19088 KB |
Output is correct |
6 |
Correct |
283 ms |
12368 KB |
Output is correct |