Submission #998235

#TimeUsernameProblemLanguageResultExecution timeMemory
998235vjudge1Dijamant (COI16_dijament)C++17
100 / 100
454 ms4692 KiB
#include <bits/stdc++.h>

using namespace std;

const int M = 1000;

int main()
{
	int n;
	cin>>n;
	bitset<1000> inh[M],tem;
	map<string,int> ind;
	for (int wht=0;wht<n;wht++)
	{
		string s;
		cin>>s;
		vector<string> v1;
		string s1;
		cin>>s1;
		bool b=ind.find(s)==ind.end();
		while (1)
		{
			cin>>s1;
			if (s1==";")
				break;
			v1.push_back(s1);
			b&=ind.find(s1)!=ind.end();
		}
		if (!b)
		{
			cout<<"greska"<<endl;
			continue;
		}
		vector<int> v;
		for (auto i:v1)
			v.push_back(ind[i]);
		int k=v.size();
		for (int i=0;i<k and b;i++)
			for (int j=i+1;j<k and b;j++)
			{
				if (inh[v[i]][v[j]] or inh[v[j]][v[i]])
					continue;
				tem=inh[v[i]]&inh[v[j]];
				if (tem.any())
					b=0;
			}
		if (b)
		{
			cout<<"ok"<<endl;
			ind[s]=ind.size();
			for (int i=0;i<k;i++)
				inh[ind[s]]|=inh[v[i]],inh[ind[s]].set(v[i]);
		}
		else
			cout<<"greska"<<endl;
	}
	
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...