This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define pb push_back
#define whole(x) x.begin(), x.end()
#define sz(x) (int)x.size()
using namespace std;
typedef long long ll;
typedef long double ld;
const int N = (int)5e4 + 7;
const int INF = (int)1e9 + 7;
const ll linf = (ll)1e18 + 1;
 
string a[N], b[N];
int main() {  
    int n; cin >> n;
    set<string> all;
    for (int i = 1; i <= n; ++i) { 
        cin >> a[i];
        if ('a' <= a[i][0] && a[i][0] <= 'z') all.insert(a[i]);
    }
    for (int i = 1; i <= n; ++i) { 
        cin >> b[i];
        if ('a' <= b[i][0] && b[i][0] <= 'z') all.insert(b[i]);
    }
    for (auto to : all) {
        int last = -1;
        for (int i = 1; i <= n; ++i) { 
            if (a[i] == to) { 
                if ('a' <= b[i][0] && b[i][0] <= 'z') continue;
                if (last == -1) last = i;
                else { 
                    last = -2;
                    break;
                }
            }
        }
        if (last == -2) return cout << "NE\n", 0;
        for (int i = 1; i <= n; ++i) { 
            if (b[i] == to) { 
                if ('a' <= a[i][0] && a[i][0] <= 'z') continue;
                if (last == -1) last = i;
                else { 
                    last = -2;
                    break;
                } 
            }
        }
        if (last == -2) return cout << "NE\n", 0;
    }
    cout << "DA\n";
    return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |