Submission #81686

# Submission time Handle Problem Language Result Execution time Memory
81686 2018-10-26T07:30:28 Z Saboon Zamjena (COCI18_zamjena) C++14
70 / 70
744 ms 60776 KB
#include <iostream>
#include <sstream>
#include <queue>
#include <stack>
#include <vector>
#include <cstring>
#include <cmath>
#include <map>
#include <unordered_map>
#include <set>
#include <algorithm>
#include <iomanip>
#define F first
#define S second
#define PB push_back
#define PF push_front
#define MP make_pair
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
const int maxn = 5e4 + 37;

unordered_map <string, int> mp;
unordered_map <string, vector <string> > v;

string s[maxn], t[maxn];

int integer (string s) {
    stringstream geek (s);
    int x = 0;
    geek >> x;
    return x;
}

bool isinteger (string s) {
    if ((int)(s[0] - '0') <= 10)
        return 1;
    return 0;
}

void dfs (string now, int x) {
    mp[now] = x;
    for (auto w : v[now])
        if (!mp.count (w))
            dfs (w, x);
}

int main() {
    ios_base::sync_with_stdio(false);
    int n;
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> s[i];
    for (int i = 0; i < n; i++)
        cin >> t[i];
    for (int k = 1; k <= 10; k++) {
        for (int i = 0; i < n; i++) {
            if (isinteger (s[i])) {
                if (isinteger (t[i])) {
                    if (s[i] != t[i]) {
                        return cout << "NE" << endl, 0;
                    }
                }
                else {
                    int x = integer (s[i]);
                    if (!mp.count (t[i])) {
                        dfs (t[i], x);
                    }
                    if (!mp.count (t[i]) or mp[t[i]] == x)
                        mp[t[i]] = x;
                    else
                        return cout << "NE" << endl, 0;
                }
            }
            else {
                if (isinteger (t[i])) {
                    int x = integer (t[i]);
                    if (!mp.count (s[i])) {
                        dfs (s[i], x);
                    }
                    if (!mp.count (s[i]) or mp[s[i]] == x)
                        mp[s[i]] = x;
                    else
                        return cout << "NE" << endl, 0;
                }
                else {
                    if (mp.count (s[i])) {
                        if (mp.count (t[i])) {
                            if (mp[s[i]] != mp[t[i]])
                                return cout << "NE" << endl, 0;
                        }
                        else {
                            mp[t[i]] = mp[s[i]];
                        }
                    }
                    else if (mp.count (t[i])) {
                        mp[s[i]] = mp[t[i]];
                    }
                    v[s[i]].PB (t[i]);
                    v[t[i]].PB (s[i]);
                }
            }
        }
    }
    cout << "DA" << endl;
}
# Verdict Execution time Memory Grader output
1 Correct 5 ms 3448 KB Output is correct
2 Correct 5 ms 3608 KB Output is correct
3 Correct 4 ms 3608 KB Output is correct
4 Correct 5 ms 3608 KB Output is correct
5 Correct 5 ms 3608 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 3700 KB Output is correct
2 Correct 4 ms 3700 KB Output is correct
3 Correct 5 ms 3700 KB Output is correct
4 Correct 4 ms 3700 KB Output is correct
5 Correct 4 ms 3700 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 3700 KB Output is correct
2 Correct 5 ms 3752 KB Output is correct
3 Correct 6 ms 3752 KB Output is correct
4 Correct 4 ms 3752 KB Output is correct
5 Correct 4 ms 3752 KB Output is correct
6 Correct 5 ms 3752 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 12 ms 4832 KB Output is correct
2 Correct 11 ms 4832 KB Output is correct
3 Correct 7 ms 4832 KB Output is correct
4 Correct 9 ms 4832 KB Output is correct
5 Correct 32 ms 6304 KB Output is correct
6 Correct 7 ms 6304 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 19 ms 6304 KB Output is correct
2 Correct 215 ms 22852 KB Output is correct
3 Correct 76 ms 22852 KB Output is correct
4 Correct 43 ms 22852 KB Output is correct
5 Correct 744 ms 60776 KB Output is correct
6 Correct 612 ms 60776 KB Output is correct