Submission #1008065

# Submission time Handle Problem Language Result Execution time Memory
1008065 2024-06-26T07:16:38 Z vicvic Zamjena (COCI18_zamjena) C++11
28 / 70
16 ms 3512 KB
#include <iostream>
#include <unordered_map>
#include <set>
#include <cstring>
#include <string>
using namespace std;
unordered_map <int, int> umap;
unordered_map <string, int> found;
int v[50005], v1[50005], n, cnt=1006;
int transform_nr (string s)
{
    if (!isdigit (s[0]))
    {
        if (found[s])
        {
            return found[s];
        }
        else
        {
            found[s]=++cnt;
            return found[s];
        }
    }
    else
    {
        int nr=0;
        for (int i=0;s[i];i++)
        {
            nr=nr*10+s[i]-'0';
        }
        return nr;
    }
}
int main()
{
    cin >> n;
    for (int i=1;i<=n;i++)
    {
        string s;
        cin >> s;
        v[i]=transform_nr (s);
    }
    for (int i=1;i<=n;i++)
    {
        string s;
        cin >> s;
        v1[i]=transform_nr (s);
    }
    for (int i=1;i<=n;i++)
    {
        if (v[i]<=1000 && v1[i]<=1000)
        {
            if (v[i]!=v1[i])
            {
                cout << "NE";
                return 0;
            }
        }
        if (v[i]>1000 && v1[i]<=1000)
        {
            if (umap[v[i]] && umap[v[i]]!=v1[i])
            {
                cout << "NE";
                return 0;
            }
            umap[v[i]]=v1[i];
        }
        if (v[i]<=1000 && v1[i]>1000)
        {
            if (umap[v1[i]] && umap[v1[i]]!=v[i])
            {
                cout << "NE";
                return 0;
            }
            umap[v1[i]]=v[i];
        }
    }
    for (int i=1;i<=n;i++)
    {
        if (v[i]>1000 && v1[i]>1000)
        {
            if (!umap[v1[i]] && !umap[v[i]])
            {
                continue;
            }
            if (!umap[v[i]])
            {
                umap[v[i]]=umap[v1[i]];
            }
            else if (!umap[v1[i]])
            {
                umap[v1[i]]=umap[v[i]];
            }
            if (umap[v[i]] && umap[v1[i]] && umap[v[i]]!=umap[v1[i]])
            {
                cout << "NE";
                return 0;
            }
        }
    }
    cout << "DA";
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Incorrect 0 ms 348 KB Output isn't correct
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 1 ms 600 KB Output is correct
4 Incorrect 3 ms 604 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 4 ms 1116 KB Output is correct
2 Correct 12 ms 2140 KB Output is correct
3 Incorrect 16 ms 3512 KB Output isn't correct
4 Halted 0 ms 0 KB -