답안 #165562

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
165562 2019-11-27T12:44:25 Z Abdulaziz_Kazim Zamjena (COCI18_zamjena) C++17
56 / 70
1000 ms 13864 KB
#include<bits/stdc++.h>
using namespace std;
string dizi[100007];
string dizi2[100007];
unordered_map<string,vector<pair<int,bool>>>degisken;
unordered_map<string,string>act;
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	
	int n;
	cin >> n;
	// string gir;
	for(int i=0;i<n;i++)
	{
		cin >> dizi[i];
		if(!isdigit(dizi[i][0]))
		{
			degisken[dizi[i]].push_back({i,0});
		}
	}
	for(int i=0;i<n;i++)
	{
		cin >> dizi2[i];
		if(!isdigit(dizi2[i][0]))
		{
			degisken[dizi2[i]].push_back({i,1});
			// if(isdigit(dizi[i][0]))
			// {
 
			// }
		}
		else
		{
			if(isdigit(dizi[i][0]))
			{
				if(dizi[i]!=dizi2[i])
				{
					cout << "NE\n";
					exit(0);
				}
			}
		}
	}
	for(int i=0;i<=n;i++)
	{
		// for(int i=0;i<n;i++)
		// {
		// 	cout << dizi[i] << " ";
		// }
		// cout <<"\n";
		// for(int i=0;i<n;i++)
		// {
		// 	cout << dizi2[i] << " ";
		// }
		// cout <<"\n\n";
		if(!isdigit(dizi[i][0]) && !isdigit(dizi2[i][0]) && dizi[i]!=dizi2[i])
		{
			// cout << i << " ";
			string za=dizi2[i];
			for(auto x:degisken[za])
			{
				degisken[dizi[i]].push_back(x);
 
				// cout << x.first << " ";
				if(x.second==0)
				{
					dizi[x.first]=dizi[i];
				}
				else
					dizi2[x.first]=dizi[i];
			}
			degisken.erase(degisken.find(za));
		}
	}
	for(int i=0;i<n;i++)
	{
		if(isdigit(dizi[i][0]) && !isdigit(dizi2[i][0]))
		{
			string muz=dizi[i],muz2=dizi2[i];
			for(auto x:degisken[muz2])
			{
				if(x.second==0)
				{
					dizi[x.first]=muz;
				}
				else
					dizi2[x.first]=muz;
			}
			
			degisken.erase(degisken.find(muz2));
		}
		else if(!isdigit(dizi[i][0])&& isdigit(dizi2[i][0]))
		{
			string muz=dizi2[i],muz2=dizi[i];
			for(auto x:degisken[muz2])
			{
				if(x.second==0)
				{
					dizi[x.first]=muz;
				}
				else
					dizi2[x.first]=muz;
			}
			degisken.erase(degisken.find(muz2));
		}
	}
	/*for(int i=0;i<n;i++)
	{
		cout << dizi[i] << " ";
	}
	cout <<"\n";
	for(int i=0;i<n;i++)
	{
		cout<< dizi2[i] << " ";
	}*/
	for(int i=0;i<n;i++)
	{
		if(dizi[i]!=dizi2[i])
		{
			cout <<"NE\n";
			exit(0);
		}
	}
	cout << "DA\n";
	exit(0);
	// for(int i=0;i<n;i++)
	// {
	// 	if(!isdigit(dizi[i][0]) && !isdigit(dizi2[i][0]))
	// 	{
	// 		for(auto x:degisken2[dizi2[i]])
	// 		{
	// 			// degisken[dizi[i]]
	// 		}
	// 	}
	// }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 6520 KB Output is correct
2 Correct 8 ms 6520 KB Output is correct
3 Correct 7 ms 6520 KB Output is correct
4 Correct 7 ms 6520 KB Output is correct
5 Correct 8 ms 6520 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 7 ms 6648 KB Output is correct
2 Correct 8 ms 6524 KB Output is correct
3 Correct 8 ms 6524 KB Output is correct
4 Correct 7 ms 6520 KB Output is correct
5 Correct 8 ms 6648 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 8 ms 6648 KB Output is correct
2 Correct 8 ms 6648 KB Output is correct
3 Correct 8 ms 6648 KB Output is correct
4 Correct 8 ms 6520 KB Output is correct
5 Correct 7 ms 6648 KB Output is correct
6 Correct 8 ms 6520 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 22 ms 6776 KB Output is correct
2 Correct 9 ms 6648 KB Output is correct
3 Correct 13 ms 7032 KB Output is correct
4 Correct 34 ms 7032 KB Output is correct
5 Correct 11 ms 7032 KB Output is correct
6 Correct 11 ms 6904 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 611 ms 8216 KB Output is correct
2 Correct 42 ms 8824 KB Output is correct
3 Correct 238 ms 10616 KB Output is correct
4 Correct 75 ms 10488 KB Output is correct
5 Execution timed out 1077 ms 13864 KB Time limit exceeded
6 Halted 0 ms 0 KB -