Submission #620581

# Submission time Handle Problem Language Result Execution time Memory
620581 2022-08-03T07:22:36 Z 3omar_ahmed Zamjena (COCI18_zamjena) C++17
14 / 70
39 ms 3792 KB
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std ;
using namespace __gnu_pbds;

#define int long long
#define endl '\n'
#define ordered_set tree<pair < int ,int >,null_type,less<pair < int ,int >>,rb_tree_tag,tree_order_statistics_node_update>
#define all(a) a.begin() , a.end()
#define alr(a) a.rbegin() , a.rend()
bool check(string x){
    return(x[0] >= '0' && x[0] <= '9');
}
signed main(){
    ios_base::sync_with_stdio(0), cin.tie(0),cout.tie(0);

    int n ;
    cin >> n ;
    vector < string > a(n) , b(n);
    map < string , string > mp ;
    for( auto &i : a )
        cin >> i;
    for( auto &i : b )
        cin >> i;
    for( int i = 0 ; i < n ; i++ )
        mp[a[i]] = mp[b[i]] = "innnnnnnnnnnnnnf";
    for( int re = 0 ; re < 10 ; re++ ) {
        for( int i = 0 ; i < n ; i++ ){
            bool f1 = check(a[i]) , f2 = check(b[i]);
            if( f1 && f2 ){
                mp[a[i]] = a[i] , mp[b[i]] = b[i];
                if(a[i] != b[i])
                    return cout << "NE" , 0;
            }
            else{
                if(!f1 && !f2){
                    if(mp[a[i]] != "innnnnnnnnnnnnnf") a[i] = mp[a[i]];
                    if(mp[b[i]] != "innnnnnnnnnnnnnf") b[i] = mp[b[i]];
                }
                else {
                    if(mp[(f1 ? b[i] : a[i])] == "innnnnnnnnnnnnnf")
                        mp[(f1 ? b[i] : a[i])] = a[i] , (f1 ? b[i] : a[i]) = (f1 ? a[i] : b[i]);
                    else{
                        if(mp[(f1 ? b[i] : a[i])] != (f1 ? b[i] : b[i]))
                            return cout << "NE" , 0;
                        else (f1 ? b[i] : a[i]) = (f1 ? a[i] : b[i]);
                    }
                }
            }
        }
    }
    for( int i = 0 ; i < n ; i++ )
        a[i] = mp[a[i]] , b[i] = mp[b[i]];
    cout << (a == b? "DA" : "NE");
    return 0 ;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 3 ms 448 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 39 ms 2064 KB Output is correct
2 Incorrect 15 ms 3792 KB Output isn't correct
3 Halted 0 ms 0 KB -