제출 #1206966

#제출 시각아이디문제언어결과실행 시간메모리
1206966lmaobruhZamjena (COCI18_zamjena)C++17
42 / 70
2 ms328 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define fi first
#define se second
#define vi vector<int>
#define fo(i,a,b) for(int i=(a);i<=(b);++i)
#define fd(i,a,b) for(int i=(a);i>=(b);--i)
#define eb emplace_back
#define all(x) x.begin(), x.end()
#define maxi(a,b) a=max(a,b)
#define mini(a,b) a=min(a,b)
#define ii pair<int,int>

const int N = 1e3+5, mod = 1e9+7;

int n;
string a[N], b[N];
map<string, string> fa;
map<string, int> g;

bool isNum(string &s) {
    for (char c : s)
        if (!isdigit(c)) return 0;
    return 1;
}

string find(string s) {
    if (!fa.count(s)) {
        fa[s]=s;
        return s;
    }
    return fa[s]==s?s:fa[s]=find(fa[s]);
}

void merge(string s, string t) {
    s=find(s), t=find(t);
    if (s!=t) fa[s]=t;
}

void solve() {
    cin >> n;
    fo(i,1,n) cin >> a[i];
    fo(i,1,n) cin >> b[i];
    fo(i,1,n) {
        if (isNum(a[i])&&isNum(b[i])&&a[i]!=b[i]) {
            cout << "NE";
            return;
        }
        if (!isNum(a[i])&&!isNum(b[i])) {
            if (a[i]==b[i]) continue;
            merge(a[i], b[i]);
        }
    }
    fo(i,1,n) {
        if (isNum(a[i])^isNum(b[i])) {
            if (isNum(a[i])) {
                int x=stoi(a[i]);
                string t=find(b[i]);
                if (!g.count(t)) g[t]=x;
                else {
                    if (g[t]!=x) {
                        cout << "NE";
                        return;
                    }
                }
            } else {
                int x=stoi(b[i]);
                string t=find(a[i]);
                if (!g.count(t)) g[t]=x;
                else {
                    if (g[t]!=x) {
                        cout << "NE";
                        return;
                    }
                }
            }
        }
    }
    cout << "DA";
}

signed main() {
    cin.tie(0)->sync_with_stdio(0);
    if (fopen("A.inp", "r"))
        freopen("A.inp", "r", stdin);
    solve();
}

컴파일 시 표준 에러 (stderr) 메시지

zamjena.cpp: In function 'int main()':
zamjena.cpp:86:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   86 |         freopen("A.inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...