# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
133415 | 2019-07-20T14:45:52 Z | tdwn | Cezar (COCI16_cezar) | C++17 | 3 ms | 408 KB |
#include <bits/stdc++.h> #define ll long long #define pb push_back #define mp make_pair using namespace std; const int maxn = 110; string tempstr[maxn]; string str[maxn]; int perm[maxn], n; vector<int>g[30], rg[30]; int visited[maxn]; vector<int>order; bool cycle; bool edge[maxn][maxn]; void dfs(int node) { if(visited[node] == 2) return; if(visited[node] == 1) { cycle = true; return; } visited[node] = 1; for(int i:g[node]) { if(visited[i] == 0) { dfs(i); } else if(visited[i] == 1) { cycle = true; } } visited[node] = 2; order.pb(node); } int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>tempstr[i]; } for(int i=1;i<=n;i++) { cin>>perm[i]; } for(int i=1;i<=n;i++) { str[i] = tempstr[perm[i]]; } /*for(int i=1;i<=n;i++) { for(int j=60;j<str[i].length();j++) { cout<<str[i][j]; } cout<<"\n"; }*/ for(int i=1;i<=n;i++) { for(int j=i+1;j<=n;j++) { if(str[j].length() < str[i].length()) { if(str[i].substr(0, str[j].length()) == str[j]) { cout<<"NE\n"; return 0; } } } } for(int i=1;i<n;i++) { for(int k=0;k<min(int(str[i].length()), int(str[i+1].length()));k++) { if(str[i][k] != str[i+1][k]) { edge[int(str[i][k]-'a')][int(str[i+1][k]-'a')] = true; break; } } } for(int i=0;i<26;i++) { for(int j=0;j<26;j++) { if(edge[i][j]) { //cout<<char(i+'a')<<", "<<char(j+'a')<<"\n"; g[i].pb(j); } } } for(int i=25;i>=0;i--) { if(visited[i] == 0) dfs(i); } if(cycle) { cout<<"NE\n"; return 0; } cout<<"DA\n"; reverse(order.begin(), order.end()); for(int i=0;i<order.size();i++) { cout<<char(order[i]+'a'); } }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 256 KB | Output is correct |
2 | Correct | 2 ms | 376 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 3 ms | 376 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 376 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 376 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 3 ms | 408 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 376 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 3 ms | 376 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 376 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 376 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 376 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |