| Task: | Bless You Autocorrect |
| Sender: | eax511 |
| Submission time: | 2016-10-22 15:29:11 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.03 s | details |
| #2 | ACCEPTED | 0.09 s | details |
| #3 | ACCEPTED | 0.10 s | details |
| #4 | ACCEPTED | 0.07 s | details |
| #5 | ACCEPTED | 0.29 s | details |
| #6 | ACCEPTED | 0.29 s | details |
| #7 | ACCEPTED | 0.06 s | details |
| #8 | ACCEPTED | 0.09 s | details |
| #9 | ACCEPTED | 0.12 s | details |
| #10 | ACCEPTED | 0.14 s | details |
| #11 | ACCEPTED | 0.13 s | details |
| #12 | ACCEPTED | 0.10 s | details |
| #13 | ACCEPTED | 0.07 s | details |
| #14 | ACCEPTED | 0.04 s | details |
| #15 | ACCEPTED | 0.06 s | details |
| #16 | ACCEPTED | 0.04 s | details |
| #17 | ACCEPTED | 0.08 s | details |
| #18 | ACCEPTED | 0.05 s | details |
| #19 | ACCEPTED | 0.06 s | details |
Compiler report
input/code.cpp: In member function 'void node::insert(const char*)':
input/code.cpp:15:13: warning: array subscript has type 'char' [-Wchar-subscripts]
if(!p[*s])(p[*s]=nodes+(++np))->p[28]=this,p[*s]->l=1010101;
^
input/code.cpp:15:20: warning: array subscript has type 'char' [-Wchar-subscripts]
if(!p[*s])(p[*s]=nodes+(++np))->p[28]=this,p[*s]->l=1010101;
^
input/code.cpp:15:52: warning: array subscript has type 'char' [-Wchar-subscripts]
if(!p[*s])(p[*s]=nodes+(++np))->p[28]=this,p[*s]->l=1010101;
^
input/code.cpp:16:9: warning: array subscript has type 'char' [-Wchar-subscripts]
p[*s]->insert(s+1);
^
input/code.cpp: In member function 'void node::shortcut(const char*)':
input/code.cpp:19:21: warning: array subscript has type 'char' [-Wchar-subscripts]
node* v = p[*s++];
^
input/code.cpp:20:35: warning: array subscript has type 'char' [-Wchar-sub...Code
#include <string>
#include <iostream>
#include <queue>
using namespace std;
int np=0;
struct node;
node* nodes;
char prefix[1010101];
struct node{
node* p[29];
int l;
bool trav;
void insert(const char* s){
if(!*s)return;
if(!p[*s])(p[*s]=nodes+(++np))->p[28]=this,p[*s]->l=1010101;
p[*s]->insert(s+1);
}
void shortcut(const char* s){
node* v = p[*s++];
while(*s&&v->p[27])v=v->p[*s++];
if(!*s&&v->p[27])return;
node* k=v;
const char* sv=s;
while(*s)k=k->p[*s++];
s=sv;
while(*s)v->p[27]=k,v=v->p[*s++];
k->p[27]=k;
}
void bfs(){
queue<node*> q;
q.emplace(this);
l=0;
while(!q.empty()){
node* v = q.front();
q.pop();
for(int i=0;i<29;++i)if(v->p[i]&&v->p[i]->l>v->l+1)v->p[i]->l=v->l+1,q.push(v->p[i]);
}
}
int search(const char* s){
node* v=this;
while(*s&&v->p[*s])v=v->p[*s++];
int n=v->l;
while(*s)++n,++s;
return n;
}
void traverse(int j){
if(trav)return;
trav=true;
cout<<this<<':'<<prefix<<": "<<l<<";";
for(int i=0;i<27;++i){
prefix[j]=i+'a'-1;
if(p[i])cout<<' '<<prefix;
}
cout<<' '<<p[27]<<' '<<p[28]<<'\n';
for(int i=0;i<29;++i){
prefix[j]=i+'a'-1;
if(p[i])p[i]->traverse(j+1);
}
prefix[j]=0;
}
};
void map(std::string& s){for(auto& it : s)it-='a'-1;}
node nodes_[1010101];
int main(){
nodes=nodes_;
ios::sync_with_stdio(0);
cin.tie(0);
int n,m;
cin>>n>>m;
string v;
while(n--)cin>>v,map(v),nodes[0].insert(v.c_str()),nodes[0].shortcut(v.c_str());
nodes[0].bfs();
while(m--)cin>>v,map(v),cout<<nodes[0].search(v.c_str())<<'\n';
prefix[0]='@';
//nodes[0].traverse(1);
return 0;
}
Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 8 6 prog program xyz horses ... |
| correct output |
|---|
| 4 2 8 3 6 ... |
| user output |
|---|
| 4 2 8 3 6 ... |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 834 1 a aaaa aaaaaaa aaaaaaaaaa ... |
| correct output |
|---|
| 1667 |
| user output |
|---|
| 1667 |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 721 1 aaaab aaaaaaaab aaaaaaaaaaaab aaaaaaaaaaaaaaaab ... |
| correct output |
|---|
| 2163 |
| user output |
|---|
| 2163 |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 1445 1 a aa aaa aaaa ... |
| correct output |
|---|
| 1445 |
| user output |
|---|
| 1445 |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 1 1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
| correct output |
|---|
| 349500 |
| user output |
|---|
| 349500 |
Test 6
Verdict: ACCEPTED
| input |
|---|
| 1 1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
| correct output |
|---|
| 349500 |
| user output |
|---|
| 349500 |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 862 71432 eeeaetaate aeaaatta tatataeta eeaeaee ... |
| correct output |
|---|
| 6 5 9 8 11 ... |
| user output |
|---|
| 6 5 9 8 11 ... |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 36155 27654 enohtteheo ttattths eeeoeeessthitihsai eeeoeeesenteniieitai ... |
| correct output |
|---|
| 7 15 11 18 16 ... |
| user output |
|---|
| 7 15 11 18 16 ... |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 85851 21958 sstteseeta inotttose nstataein iooosio ... |
| correct output |
|---|
| 9 6 7 5 7 ... |
| user output |
|---|
| 9 6 7 5 7 ... |
Test 10
Verdict: ACCEPTED
| input |
|---|
| 57009 63373 htenestn tntsnten tinia oeneeas ... |
| correct output |
|---|
| 6 4 9 6 3 ... |
| user output |
|---|
| 6 4 9 6 3 ... |
Test 11
Verdict: ACCEPTED
| input |
|---|
| 74407 16148 glisoudob hlfepnlcueoa babynoehtr hlhyognsacedl ... |
| correct output |
|---|
| 8 7 9 11 10 ... |
| user output |
|---|
| 8 7 9 11 10 ... |
Test 12
Verdict: ACCEPTED
| input |
|---|
| 28654 84535 oottoii eteeiii aoateeat oetiieta ... |
| correct output |
|---|
| 6 3 8 6 7 ... |
| user output |
|---|
| 6 3 8 6 7 ... |
Test 13
Verdict: ACCEPTED
| input |
|---|
| 36314 68959 rastatiaet iaaoaeon dtdeoaeert drs ... |
| correct output |
|---|
| 8 6 8 7 7 ... |
| user output |
|---|
| 8 6 8 7 7 ... |
Test 14
Verdict: ACCEPTED
| input |
|---|
| 4853 9409 eethlhehetcdedceilreetdedtresr... |
| correct output |
|---|
| 12 15 63 34 17 ... |
| user output |
|---|
| 12 15 63 34 17 ... |
Test 15
Verdict: ACCEPTED
| input |
|---|
| 7704 4610 nbeweacrvsasairsnldhnrgchrthoi... |
| correct output |
|---|
| 36 39 85 53 60 ... |
| user output |
|---|
| 36 39 85 53 60 ... |
Test 16
Verdict: ACCEPTED
| input |
|---|
| 4577 6495 eteataeet eteaaeeteeaeeaaetaaeeeaeaateee... |
| correct output |
|---|
| 53 31 29 32 64 ... |
| user output |
|---|
| 53 31 29 32 64 ... |
Test 17
Verdict: ACCEPTED
| input |
|---|
| 12153 709 ihenhoenomeeotet ihenhoegwfhahnetslatrlaifmlsyr... |
| correct output |
|---|
| 10 46 96 37 24 ... |
| user output |
|---|
| 10 46 96 37 24 ... |
Test 18
Verdict: ACCEPTED
| input |
|---|
| 544 37554 ihenhoegthl ihenhoegwfhahneduorwr ihenhoegweysn ihenhoegwfhahnetslatrlaifmlsyr... |
| correct output |
|---|
| 3 3 7 18 11 ... |
| user output |
|---|
| 3 3 7 18 11 ... |
Test 19
Verdict: ACCEPTED
| input |
|---|
| 519 38588 ohhntstaenoass ohhntstaenriaiioeontasossi ohhntsoatn ohhntstaenriaiioeontttrasartho ... |
| correct output |
|---|
| 7 30 11 8 18 ... |
| user output |
|---|
| 7 30 11 8 18 ... |
