Submission #98262

#TimeUsernameProblemLanguageResultExecution timeMemory
98262dalgerokCezar (COCI16_cezar)C++17
80 / 100
3 ms512 KiB
#include<bits/stdc++.h> using namespace std; const int N = 105, M = 26; int n, cl[N]; int a[M][M], in[M]; string s[N], t[N]; vector < int > g[N], order; char ans[M]; void dfs1(int v){ cl[v] = 1; for(int to = 0; to < M; to++){ if(a[v][to]){ if(cl[to] == 0){ dfs1(to); } else if(cl[to] == 1){ cout << "NE"; exit(0); } } } cl[v] = 2; } void dfs2(int v){ cl[v] = 1; for(int to = 0; to < M; to++){ if(a[v][to] && !cl[to]){ dfs2(to); } } order.push_back(v); } int main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin >> n; for(int i = 1; i <= n; i++){ cin >> s[i]; for(auto &it : s[i]){ it -= 'a'; } } for(int i = 1; i <= n; i++){ int x; cin >> x; t[i] = s[x]; } for(int i = 1; i <= n; i++){ for(int j = 1; j < i; j++){ if(t[j].substr(0, (int)t[i].size()) == t[i]){ return cout << "NE", 0; } } } for(int i = 2; i <= n; i++){ for(int j = 0; j < min((int)t[i - 1].size(), (int)t[i].size()); j++){ if(t[i - 1][j] != t[i][j]){ if(a[t[i][j]][t[i - 1][j]] == 0){ a[t[i][j]][t[i - 1][j]] = 1; in[t[i - 1][j]] += 1; } break; } } } for(int i = 1; i <= n; i++){ if(cl[i] == 0){ dfs1(i); } } memset(cl, 0, sizeof(cl)); for(int i = 0; i < M; i++){ if(in[i] == 0){ dfs2(i); } } for(int i = 0; i < M; i++){ ans[order[i]] = i; } cout << "DA\n"; for(int i = 0; i < M; i++){ cout << char(ans[i] + 'a'); } }

Compilation message (stderr)

cezar.cpp: In function 'int main()':
cezar.cpp:67:29: warning: array subscript has type 'char' [-Wchar-subscripts]
                 if(a[t[i][j]][t[i - 1][j]] == 0){
                             ^
cezar.cpp:67:42: warning: array subscript has type 'char' [-Wchar-subscripts]
                 if(a[t[i][j]][t[i - 1][j]] == 0){
                                          ^
cezar.cpp:68:30: warning: array subscript has type 'char' [-Wchar-subscripts]
                     a[t[i][j]][t[i - 1][j]] = 1;
                              ^
cezar.cpp:68:43: warning: array subscript has type 'char' [-Wchar-subscripts]
                     a[t[i][j]][t[i - 1][j]] = 1;
                                           ^
cezar.cpp:69:35: warning: array subscript has type 'char' [-Wchar-subscripts]
                     in[t[i - 1][j]] += 1;
                                   ^
#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...