Submission #924975

# Submission time Handle Problem Language Result Execution time Memory
924975 2024-02-10T09:03:36 Z vjudge1 Type Printer (IOI08_printer) C++17
20 / 100
53 ms 21964 KB
#include <bits/stdc++.h>
#define ll long long
#define F first
#define S second
#define pii pair<int,int>
const int mod = 1e9 + 7;
const int mxN = 6e6 + 5;
using namespace std;
int trie[mxN][26];
int nodeCnt;
char cnt[mxN];
int p[mxN];
string chk;
int ed;
int mx;
void insert(int u = 0){
  for(int i = 0;i <chk.size();i++){
    if(!trie[u][chk[i] - 'a']) trie[u][chk[i] - 'a'] = ++nodeCnt;
    u = trie[u][chk[i] - 'a'];
    cnt[u] = chk[i];
  }
}
void calcD(int u = 0,int dep = 0){
  if(dep > mx){
    ed = u;
    mx = dep;
  }
  // cout<<u<<' ';
  for(int i = 0;i < 26;i++){
    if(trie[u][i]) {
      p[trie[u][i]] = u;
      calcD(trie[u][i],dep + 1);
    }
  }
}
set<int>path;
vector<char>ans;
void query(int u = 0){
    queue<int> q;
    int lst = -1;
    for(int i = 0;i < 26;i++){
      if(trie[u][i]){
        if(path.find(trie[u][i]) != path.end()) lst = trie[u][i];
        else q.push(trie[u][i]);
      }
    }
    if(lst == -1 && q.empty()){
      ans.push_back('P');
      return;
    }
    if(lst != -1)
    q.push(lst);
    while(q.size()){
      ans.push_back(cnt[q.front()]);
      query(q.front());
      ans.push_back('-');
      q.pop();
    }
}
signed main(){
  // ios_base::sync_with_stdio(0);
  // cin.tie(0);
  // cout.tie(0);
  int n;
  cin >>n;
  for(int i = 0;i < n;i++){
    cin >>chk;
    insert();
  }
  calcD();
  while(ed){
    path.insert(ed);
    ed = p[ed];
  }
  query();
  // cout<<"TEST\n";
  while(ans.back() == '-') ans.pop_back();
  cout<<ans.size()<<'\n';
  for(auto x : ans){
    cout<<x<<'\n';
  }
}

Compilation message

printer.cpp: In function 'void insert(int)':
printer.cpp:17:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   17 |   for(int i = 0;i <chk.size();i++){
      |                 ~~^~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2396 KB Output is correct
2 Correct 1 ms 2396 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2648 KB Output is correct
2 Correct 1 ms 2392 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 2396 KB didn't print every word
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Incorrect 1 ms 2392 KB didn't print every word
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 2396 KB didn't print every word
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 3164 KB didn't print every word
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 8 ms 5212 KB didn't print every word
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 27 ms 11488 KB didn't print every word
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 50 ms 21964 KB didn't print every word
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 53 ms 18124 KB didn't print every word
2 Halted 0 ms 0 KB -