| Show all threads     Hide all threads     Show all messages     Hide all messages | 
| WTF?! Memory limit exceeded && Time limit | AGorohov | 1269. Obscene Words Filter | 14 Feb 2025 01:13 | 1   | 
То выдает Memory limit exceeded на 200 Кб, то Time limit exceeded на 46 или даже 15 мс. Как я понимаю, тут только имитация реальной проверки, и ожидается какое-то конкретное решение, а не нормально работающее. Кто прошёл эти круги ада, помогите советом! Моё решение использует алгоритм Ахо-Корасика, на тестовых данных выдаёт правильные результаты. Заменил HashMap в нодах на массив [256] - всё равно не проходит, те же ошибки. Я не знаю что думать, весь день убил на эту ерунду.   Edited by author 14.02.2025 01:16  | 
| Aho Carasick | sailingoat | 1269. Obscene Words Filter | 29 Jan 2025 22:36 | 1   | 
if MLE, avoid next[100001][256] and use a "flatmap" datastructure instead. (just store key-value pairs in dynamic array)  | 
| If you have WA12 | Denis Koshman | 1269. Obscene Words Filter | 29 Jan 2025 22:34 | 2   | 
Try this test:   2 abc b 1 abc   Correct answer: 1 1  | 
| Passed or | foxlup | 1269. Obscene Words Filter | 12 Jan 2025 18:12 | 2   | 
4 aceg ACEG {Ç}{Æ} {F}{E}{D} 3 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ {!}{"}{#}{$}{%}{&}{'}{(}{)}{*}{+}{,}{-}{.}{/}{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{:}{;}{<}{=}{>}{?}{@}{A}{B}{C}{D}{E}{F}{G}{H}{I}{J}{K}{L}{M}{N}{O}{P}{Q}{R}{S}{T}{U}{V}{W}{X}{Y}{Z}{[}{\}{]}{^}{_}{`}{a}{b}{c}{d}{e}{f}{g}{h}{i}{j}{k}{l}{m}{n}{o}{p}{q}{r}{s}{t}{u}{v}{w}{x}{y}{z}{{}{|}{}}{~}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{ }{¡}{¢}{£}{¤}{¥}{¦}{§}{¨}{©}{ª}{«}{¬}{}{®}{¯}{°}{±}{²}{³}{´}{µ}{¶}{·}{¸}{¹}{º}{»}{¼}{½}{¾}{¿}{À}{Á}{Â}{Ã}{Ä}{Å}{Æ}{Ç}{È}{É}{Ê}{Ë}{Ì}{Í}{Î}{Ï}{Ð}{Ñ}{Ò}{Ó}{Ô}{Õ}{Ö}{×}{Ø}{Ù}{Ú}{Û}{Ü}{Ý}{Þ}{ß}{à}{á}{â}{ã}{ä}{å}{æ}{ç}{è}{é}{ê}{ë}{ì}{í}{î}{ï}{ð}{ñ}{ò}{ó}{ô}{õ}{ö}{÷}{ø}{ù}{ú}{û}{ü}{ý}{þ} {þ}{ý}{ü}{û}{ú}{ù}{ø}{÷}{ö}{õ}{ô}{ó}{ò}{ñ}{ð}{ï}{î}{í}{ì}{ë}{ê}{é}{è}{ç}{æ}{å}{ä}{ã}{â}{á}{à}{ß}{Þ}{Ý}{Ü}{Û}{Ú}{Ù}{Ø}{×}{Ö}{Õ}{Ô}{Ó}{Ò}{Ñ}{Ð}{Ï}{Î}{Í}{Ì}{Ë}{Ê}{É}{È}{Ç}{Æ}{Å}{Ä}{Ã}{Â}{Á}{À}{¿}{¾}{½}{¼}{»}{º}{¹}{¸}{·}{¶}{µ}{´}{³}{²}{±}{°}{¯}{®}{}{¬}{«}{ª}{©}{¨}{§}{¦}{¥}{¤}{£}{¢}{¡}{ }{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{~}{}}{|}{{}{z}{y}{x}{w}{v}{u}{t}{s}{r}{q}{p}{o}{n}{m}{l}{k}{j}{i}{h}{g}{f}{e}{d}{c}{b}{a}{`}{_}{^}{]}{\}{[}{Z}{Y}{X}{W}{V}{U}{T}{S}{R}{Q}{P}{O}{N}{M}{L}{K}{J}{I}{H}{G}{F}{E}{D}{C}{B}{A}{@}{?}{>}{=}{<}{;}{:}{9}{8}{7}{6}{5}{4}{3}{2}{1}{0}{/}{.}{-}{,}{+}{*}{)}{(}{'}{&}{%}{$}{#}{"}{!}   Passed or 3 166  | 
| RE2 in Rust | Yury_Semenov | 1269. Obscene Words Filter | 16 Oct 2024 20:41 | 1   | 
In the statement, "any symbol" means NOT any valid ASCII char, but any byte, including those with codes 128..255. Common methods to read text in Rust, including stdin().read_line, expect valid UTF-8 and therefore crash on test 2 where bytes 128..255 are present. I got AC with this:   let mut reader = BufReader::new(stdin()); let mut s = Vec::new(); reader.read_until(10, &mut s).unwrap();  | 
| WA #3 :( | Rafal | 1269. Obscene Words Filter | 15 Mar 2024 14:29 | 8   | 
Hi. Any ideas what they put inside the test file to #3? У меня этот тест проходит :(, но WA 3... Может кто-нибудь помочь с тестом? I have passed your test,but I still WA#3.Why?   Read badwords with spaces, so: 'this is badword'   not: this is badword   :) changes nothing, still wrong answer Could be space trimming of right side or left side a problem... Hi. Any ideas what they put inside the test file to #3?  | 
| If you had trouble with 13/27 tests | Aleksey[TheCrawfish]Bykov'` | 1269. Obscene Words Filter | 18 Sep 2022 21:42 | 1   | 
If you have WA 13, try this test: 1 a 1 b....ba , where b repeated ~130000 times   If you've got rte 27: m can be more than 10000  | 
| WA2 suffix array | Dan | 1269. Obscene Words Filter | 28 Jun 2019 02:09 | 1   | 
Why wa2? #include <bits/stdc++.h> #define all(a) a.begin(), a.end() #define vc vector   using namespace std;   vc<int> p; string s; int n; void calcSuffixArray() {     p.resize(n);     vc<int> c(n), pn(n), cn(n), k(max(256, n));     for (char ch : s) {         k[ch]++;     }     partial_sum(k.begin(), k.begin() + 256, k.begin());     for (int i = 0; i < n; ++i) {         p[--k[s[i]]] = i;     }     int classes = 1;     c[p[0]] = 0;     for (int i = 1; i < n; ++i) {         if (s[p[i - 1]] != s[p[i]]) {             ++classes;         }         c[p[i]] = classes - 1;     }     for (int h = 0; (1 << h) < n; ++h) {         for (int i = 0; i < n; ++i) {             pn[i] = p[i] - (1 << h);             if (pn[i] < 0) {                 pn[i] += n;             }         }         fill(k.begin(), k.begin() + classes, 0);         for (int i = 0; i < n; ++i) {             k[c[pn[i]]]++;         }         partial_sum(k.begin(), k.begin() + classes, k.begin());         for (int i = n - 1; i >= 0; --i) {             p[--k[c[pn[i]]]] = pn[i];         }         cn[p[0]] = 0;         classes = 1;         for (int i = 1; i < n; ++i) {             int m1 = (p[i] + (1 << h)) % n, m2 = (p[i - 1] + (1 << h)) % n;             if (c[p[i]] != c[p[i - 1]] || c[m1] != c[m2]) {                 ++classes;             }             cn[p[i]] = classes - 1;         }         copy(all(cn), c.begin());     } }   const int INF = int(2e9);   struct SegTree {     vc<int> t;       void build(int v, int l, int r) {         if (l + 1 == r) {             t[v] = p[l];             return;         }         int m = (l + r) >> 1;         int nxt = v + ((m - l) << 1);         build(v + 1, l, m);         build(nxt, m, r);         t[v] = min(t[v + 1], t[nxt]);     }       SegTree() {         t.resize(2 * n);         build(0, 0, n);     }       int getMin(int v, int l, int r, int ql, int qr) {         if (ql <= l && r <= qr) {             return t[v];         }         int m = (l + r) >> 1;         int nxt = v + ((m - l) << 1);         int ans = INF;         if (ql < m) {             ans = min(ans, getMin(v + 1, l, m, ql, qr));         }         if (m < qr) {             ans = min(ans, getMin(nxt, m, r, ql, qr));         }         return ans;     }   };   struct comp {     string t;     int pos;     comp(string t) : t(move(t)), pos(0) {}     bool operator ()(const int& a, const int& b) {         if (b == -1) {             return (pos + a < s.size() ? s[a + pos] < t[pos] : true);         }         else {             return (pos + b < s.size() ? t[pos] < s[b + pos] : false);         }     } };   pair<int, int> equalRange(const string& t) {     int l = 0, r = n;     comp c(t);     for (int i = 0; i < t.size() && l < r; ++i) {         l = lower_bound(p.begin() + l, p.begin() + r, -1, c) - p.begin();         r = upper_bound(p.begin() + l, p.begin() + r, -1, c) - p.begin();         c.pos++;     }     return make_pair(l, r); }   void solve() {     int w;     cin >> w;     vc<string> words(w);     cin.get();     for (string& i : words) {         getline(cin, i);     }     int rows;     cin >> rows;     cin.get();     vc<int> sz(rows);     for (int i = 0; i < rows; ++i) {         string add;         getline(cin, add);         add.push_back((i == rows - 1 ? '\0' : '\n'));         sz[i] = add.size();         s += add;     }     n = s.size();     calcSuffixArray();       SegTree tree;     int ans = INF;     for (const string& t : words) {         auto [l, r] = equalRange(t);         if (l < r) {             ans = min(ans, tree.getMin(0, 0, n, l, r));         }     }       if (ans == INF) {         cout << "Passed";         return;     }       for (int i = 0; i < rows; ++i) {         if (sz[i] <= ans) {             ans -= sz[i];         }         else {             cout << i + 1 << ' ' << ans + 1 << endl;             return;         }     }     cout << "WTF"; }   int main() {     solve();     return 0; }  | 
| help with aho corasick MLE 7! | muhammad | 1269. Obscene Words Filter | 21 Sep 2018 23:02 | 2   | 
I can't think of a way to store goto and fail transitions of so many vertices and avoid MLE. please help.   here's code:   #include <stdio.h> #include <queue> using namespace std; short g[110000][256]; short f[110000]; short o[110000]; short n,m,newstate=0; queue<short>Q; int main(void){     short i,pos=0,q,r,u,v,ch,state;     scanf("%hd",&n);getchar();     for(i=1;i<=n;++i){         r=0;         ch=getchar();         state=0;         ++r;         ch+=128;         while(g[state][ch]){             state=g[state][ch];             ch=getchar();             ++r;             ch+=128;         }         while(ch!='\n'+128){             newstate=newstate+1;             g[state][ch]=newstate;             state=newstate;             ch=getchar();             ++r;             ch+=128;         }         o[state]=r-1;     }     for(i=0;i<256;++i){         if(q=g[0][i]){             f[q]=0;             Q.push(q);         }     }     while(!Q.empty()){         r=Q.front();         Q.pop();         for(i=0;i<256;++i){             u=g[r][i];             if(!(u==0&&r>0)){                 Q.push(u);                 v=f[r];                 while(g[v][i]==0&&v>0) v=f[v];                 f[u]=g[v][i];                 if(o[u]==0) o[u]=o[f[u]];             }         }     }     scanf("%hd",&m);getchar();     for(i=1;i<=m;++i){         q=0;r=0;         while((ch=getchar())!='\n'){             ch+=128;             ++r;             while(g[q][ch]==0&&q>0) q=f[q];             q=g[q][ch];             if(o[q]){                 printf("%hd %hd",i,r-o[q]+1);                 return 0;             }         }     }     printf("Passed\n");     return 0; } you got pretty close, modified your solution to get AC. let me know if you need hints :) ikhomeriki@gmail.com   Edited by author 21.09.2018 23:04  | 
| 8 test | Artem | 1269. Obscene Words Filter | 11 Aug 2018 00:25 | 1   | 
8 test Artem 11 Aug 2018 00:25  | 
| Pitfalls | Gary Ye | 1269. Obscene Words Filter | 14 Sep 2017 20:39 | 2   | 
Some testcases contain empty strings, which is very nasty, and they should be read in combination with scanf and gets. I had scanf("%d\n", &N) initially, which skipped the empty lines afterwards, so my gets() calls where kind of useless.   Secondly, here are some testcases:   2 bc abcd 1 abcx   Should return 1 2   2 bc abcd 1 abcd   Should return 1 1  | 
| The problem is really evil.  | Mahilewets | 1269. Obscene Words Filter | 10 Jul 2017 12:21 | 2   | 
Check my submissions and learn how evil the problem is! Really tired trying to AC with Aho-Corasick. I would switch to suffix array and if not succeed to suffix tree.  | 
| I had a MLE 7 test - I split the tree into 3 parts - Accepted 0.593 | uu_Innk | 1269. Obscene Words Filter | 7 Jul 2017 21:04 | 3   | 
I had a MLE 7 test - I split the tree into 3 parts And choose the best 3 answers Accepted 0.593 !!!!   ------------------------- Enough for the division into 2 parts   Edited by author 30.07.2011 10:18 sorry its late, but can you elaborate please ? I suppose he divided obscene words in three parts. Then did Aho -  Corasick string matching  algorithm for each of the parts separately.   Edited by author 07.07.2017 21:05  | 
| Time limit update in problem 1269 Obscene Words Filter | Vladimir Yakovlev (USU) | 1269. Obscene Words Filter | 26 Jun 2016 22:33 | 1   | 
The new time limit is 1.0 seconds (old - 0.5s). All submissions have been rejudged. The number of authors who has AC remain almost the same.  | 
| to admins | Vladimir Leskov`` | 1269. Obscene Words Filter | 21 May 2016 21:31 | 2   | 
to admins Vladimir Leskov`` 21 May 2016 20:10 What is real TL? In statements it is 0.5s, but in solutions rating there are solutions which passed with time bigger than 0.5s. For some tasks, they had a bigger time limit before, but after it changed, old solutions might have not been rejudged for whatever reasons.  | 
| test case answer | rakeshvarna | 1269. Obscene Words Filter | 26 Jul 2015 22:27 | 2   | 
can somebody explain how the example shown has answer as 6 33 and not 6 44? are we not supposed to give the word position? 33 is number of symbol position in line))       Edited by author 26.07.2015 22:28   Edited by author 26.07.2015 22:28  | 
| To admins | Adhambek | 1269. Obscene Words Filter | 26 Jun 2015 19:00 | 1   | 
why authors didn't rejudge??? some authors got accepted more than 0.5 sec.... i don't understand why?  | 
| Do NOT forget to output the "Passed" - word in the end, for WA#5!!!! | Yerlan | 1269. Obscene Words Filter | 29 Dec 2014 17:14 | 1   | 
 | 
| WA1 | Kirill Luchikhin | 1269. Obscene Words Filter | 4 Jun 2014 19:30 | 1   | 
WA1 Kirill Luchikhin 4 Jun 2014 19:30     Edited by author 04.06.2014 19:39  | 
| WA 30 | Disintegrator | 1269. Obscene Words Filter | 3 Mar 2014 21:03 | 1   | 
WA 30 Disintegrator 3 Mar 2014 21:03 WA 30. Can anyone help me? Or just give AC code? I have spent to much time on this problem. email: LegionN7@i.ua   Update: Accepted.   Edited by author 05.03.2014 18:52  |