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 ... |