Submission #756577

#TimeUsernameProblemLanguageResultExecution timeMemory
756577pccZamjena (COCI18_zamjena)C++14
70 / 70
66 ms8136 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define pll pair<ll,ll>
#define fs first
#define sc second

const int mxn = 5e5+10;
int dsu[mxn*2],sz[mxn*2],cnt[mxn*2];

int root(int k){
	return k == dsu[k]?k:dsu[k] = root(dsu[k]);
}
void onion(int a,int b){
	a = root(a),b = root(b);
	if(a == b)return;
	if(sz[a]<sz[b])swap(a,b);
	dsu[b] = a;
	sz[a] += sz[b];
	cnt[a] += cnt[b];
	return;
}

int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int n;
	cin>>n;
	string a[n],b[n];
	vector<string> all;
	for(auto &i:a)cin>>i,all.push_back(i);
	for(auto &i:b)cin>>i,all.push_back(i);
	sort(all.begin(),all.end());
	all.resize(unique(all.begin(),all.end())-all.begin());
	for(int i = 0;i<all.size();i++){
		dsu[i] = i;
		sz[i] = 1;
		if(all[i][0]>='0'&&all[i][0]<='9')cnt[i] = 1;
	}
	for(int i = 0;i<n;i++){
		if(a[i] == b[i])continue;
		int ta = lower_bound(all.begin(),all.end(),a[i])-all.begin();
		int tb = lower_bound(all.begin(),all.end(),b[i])-all.begin();
		onion(ta,tb);
	}
	for(int i = 0 ;i<all.size();i++){
		if(dsu[i] == i){
			if(cnt[i]>1){
				cout<<"NE";
				return 0;
			}
		}
	}
	cout<<"DA";
	return 0;
}

Compilation message (stderr)

zamjena.cpp: In function 'int main()':
zamjena.cpp:35:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::__cxx11::basic_string<char> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |  for(int i = 0;i<all.size();i++){
      |                ~^~~~~~~~~~~
zamjena.cpp:46:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::__cxx11::basic_string<char> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   46 |  for(int i = 0 ;i<all.size();i++){
      |                 ~^~~~~~~~~~~
#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...