# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
869143 | 2023-11-03T10:04:50 Z | tuannm | Zamjena (COCI18_zamjena) | C++17 | 23 ms | 8084 KB |
#include<bits/stdc++.h> #define ii pair<int, int> #define ll pair<long long, long long> #define fi first #define se second #define pb push_back //#define ORDS using namespace std; #ifdef ORDS #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; #define ordered_set tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> #endif const int mod[2] = {1000000007, 998244353}; const int N = 1e5 + 1; const string NAME = "zamjena"; const int lim = 2147483647; //const unsigned int lim = 4294967295; //const long long lim = 9223372036854775807; //const unsigned long long lim = 18446744073709551615; const int mset = 0x3f; const double pi = acos(-1); mt19937 rd(chrono::steady_clock::now().time_since_epoch().count()); int n; int x[N], y[N]; map<string, int> mp; string a[N], b[N]; #ifdef i128 ostream & operator << (ostream &out, const __int128 &x){ __int128 i = x; vector<int> digits; while(i > 0){ digits.pb(i % 10); i /= 10; } reverse(digits.begin(), digits.end()); for(auto x : digits) out << x; return out; } #endif void inp(){ cin >> n; for(int i = 1; i <= n; ++i){ cin >> a[i]; } for(int i = 1; i <= n; ++i){ cin >> b[i]; } } void solve(){ for(int i = 1; i <= n; ++i){ if(a[i][0] >= '0' && a[i][0] <= '9'){ for(int j = 0; j < a[i].size(); ++j){ x[i] = x[i] * 10 + (a[i][j] - '0'); } } else x[i] = -1; if(b[i][0] >= '0' && b[i][0] <= '9'){ for(int j = 0; j < b[i].size(); ++j){ y[i] = y[i] * 10 + (b[i][j] - '0'); } } else y[i] = -1; } bool ok = true; for(int i = 1; i <= n; ++i){ if(x[i] == -1 && y[i] == -1) continue; if(x[i] == -1){ if(!mp[a[i]]) mp[a[i]] = y[i]; else ok = false; } if(y[i] == -1){ if(!mp[b[i]]) mp[b[i]] = x[i]; else ok = false; } } for(int i = 1; i <= n; ++i){ if(x[i] == -1 && mp[a[i]]) x[i] = mp[a[i]]; if(y[i] == -1 && mp[b[i]]) y[i] = mp[b[i]]; } for(int i = 1; i <= n; ++i){ if(x[i] == -1 && y[i] == -1) continue; if(x[i] == -1){ if(!mp[a[i]]) mp[a[i]] = y[i]; else ok = false; } if(y[i] == -1){ if(!mp[b[i]]) mp[b[i]] = x[i]; else ok = false; } } for(int i = 1; i <= n; ++i){ if(x[i] == -1 && mp[a[i]]) x[i] = mp[a[i]]; if(y[i] == -1 && mp[b[i]]) y[i] = mp[b[i]]; if(x[i] != y[i]) ok = false; } if(ok) cout << "DA"; else cout << "NE"; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #ifdef TimeCalculation auto starttime = chrono::high_resolution_clock::now(); #endif if(fopen((NAME + ".inp").c_str(), "r")){ freopen((NAME + ".inp").c_str(), "r", stdin); freopen((NAME + ".out").c_str(), "w", stdout); } inp(); solve(); #ifdef TimeCalculation auto endtime = chrono::high_resolution_clock::now(); auto duration = chrono::duration_cast<chrono::milliseconds>(endtime - starttime).count(); cout << "\n=====" << "\nTime elapsed: " << duration << " ms\n"; #endif } /* 5 x 3 x y 3 x y 2 z 3 */
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 6748 KB | Output is correct |
2 | Correct | 1 ms | 6748 KB | Output is correct |
3 | Correct | 1 ms | 6748 KB | Output is correct |
4 | Correct | 1 ms | 6748 KB | Output is correct |
5 | Correct | 1 ms | 6744 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 6744 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 6748 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 6744 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 9 ms | 7260 KB | Output is correct |
2 | Incorrect | 23 ms | 8084 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |