Submission #1177615

#TimeUsernameProblemLanguageResultExecution timeMemory
1177615vicvicCezar (COCI16_cezar)C++20
20 / 100
651 ms456 KiB
#include <iostream> #include <fstream> #include <vector> #include <algorithm> #include <set> #include <queue> #include <cstring> using namespace std; int n; string v[105], final[105]; int order[105], viz[50], outdegree[50]; set <int> vec[50], ivec[50]; int rnk[105]; int looped=0; void check (int nod) { if (viz[nod]) { looped=1; return; } viz[nod]=1; for (auto chestie : vec[nod]) { check (chestie); } viz[nod]=0; } int cnt=0; void dfs (int nod) { viz[nod]=1; for (auto chestie : vec[nod]) { if (viz[chestie]) continue; dfs (chestie); } rnk[++cnt]=nod; } int main () { cin >> n; int mxlen=0; for (int i=1;i<=n;i++) { cin >> v[i]; mxlen=max (mxlen, (int)v[i].size()); } for (int i=1;i<=n;i++) { cin >> order[i]; } for (int i=1;i<=n;i++) { final[order[i]]=v[i]; } for (int i=1;i<n;i++) { for (int j=i+1;j<=i+1;j++) { bool ok=0; for (int ind=0;ind<min (final[i].size(), final[j].size());ind++) { if (final[i][ind]!=final[j][ind]) { ok=1; vec[final[j][ind]-'a'+1].insert (final[i][ind]-'a'+1); break; } } if (!ok && final[j].size()<final[i].size()) { cout << "NE"; return 0; } } } for (int i=1;i<=26;i++) { memset (viz, 0, sizeof(viz)); check (i); if (looped) { cout << "NE"; return 0; } } memset (viz, 0, sizeof(viz)); for (int i=1;i<=26;i++) { if (!viz[i]) dfs (i); } cout << "DA\n"; string ans; ans.resize (26); for (int i=1;i<=26;i++) { ans[rnk[i]-1]=i+'a'-1; } cout << ans; 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...
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...