Submission #990707

#TimeUsernameProblemLanguageResultExecution timeMemory
990707vjudge1Dijamant (COI16_dijament)C++17
56 / 100
2032 ms1024 KiB
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); set<string> add; int n; cin>>n; bitset<1000> inh[n],der[n],t,t1,dec; map<string,int> ind; for (int oops=0;oops<n;oops++) { string s; cin>>s; string ans="ok"; if (add.find(s)!=add.end()) ans="greska"; string s1; vector<string> v; cin>>s1; while (1) { cin>>s1; if (s1==";") break; if (add.find(s1)==add.end()) ans="greska"; v.push_back(s1); } if (ans=="ok") { ind[s]=add.size(); add.insert(s); for (auto i:v) { inh[ind[s]].set(ind[i]); inh[ind[s]]|=inh[ind[i]]; } for (int i=0;i<n;i++) if (inh[ind[s]][i]) der[i].set(ind[s]); for (int i=0;i<n;i++) { if (!inh[ind[s]][i]) continue; t=der[i]&inh[ind[s]]; dec.reset(); for (int j=0;j<n;j++) if (t[j]) { t1=inh[j]&dec; if (!t1.count()) dec.set(j); } if (dec.count()>1) { ans="greska"; break; } } if (ans=="greska") { for (int i=0;i<n;i++) if (inh[ind[s]][i]) der[i].set(ind[s],0); inh[ind[s]].reset(); ind.erase(s); add.erase(s); } } cout<<ans<<'\n'; } 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...