QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#136516 | #4195. Looking for Waldo | RetiredButNotTired# | AC ✓ | 71ms | 5788kb | C++20 | 2.7kb | 2023-08-08 22:46:47 | 2023-08-08 22:46:49 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
int tt, tc;
#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
// inline char cn() {
// static char buf[1000010], *p1 = buf,*p2 = buf;
// return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1000000, stdin), p1 == p2) ? EOF : *p1++;
// }
// void read(int& x) {
// x = 0; char ch = cn();
// while (ch < '0' || ch > '9') ch = cn();
// while (ch >= '0' && ch <= '9') x = x * 10 + (ch - '0'), ch = cn();
// }
// void read(char& x) {
// char ch = cn();
// while (ch < 'A' || ch > 'Z') ch = cn();
// x = ch;
// }
template<class T>
struct RMQ {
vector<vector<T>> jmp;
RMQ() {}
RMQ(const vector<T>& V) : jmp(1, V) {
for (int pw = 1, k = 1; pw * 2 <= sz(V); pw *= 2, ++k) {
jmp.emplace_back(sz(V) - pw * 2 + 1);
rep(j,0,sz(jmp[k]))
jmp[k][j] = min(jmp[k - 1][j], jmp[k - 1][j + pw]);
}
}
T query(int a, int b) {
assert(a < b); // or return inf if a == b
int dep = 31 - __builtin_clz(b - a);
return min(jmp[dep][a], jmp[dep][b - (1 << dep)]);
}
};
char imp[] = { 'W', 'A', 'L', 'D', 'O' };
int solve(const vector<vector<char>>& v, int h, int w) {
vector<vector<vector<int>>> nxt(5, vector<vector<int>>(h, vector<int>(w, 1e6)));
for (int k = 0; k < 5; k++)
for (int j = 0; j < w; j++)
for (int i = h - 2; i >= 0; --i) nxt[k][i][j] = (v[i + 1][j] == imp[k] ? i + 1 : nxt[k][i + 1][j]);
int ans = 1e9;
int sq = sqrt(h * w) + 5;
for (int row = 0; row < h; row++) {
vector<RMQ<int>> rmq(5);
for (int k = 0; k < 5; k++) {
vector<int> seq(w);
for (int col = 0; col < w; col++) seq[col] = (v[row][col] == imp[k] ? 1 : nxt[k][row][col] - row + 1);
rmq[k] = RMQ(seq);
}
for (int len = 1; len <= min(w, sq); len++) {
for (int col = 0; col + len - 1 < w; col++) {
int mx = -1e9;
for (int k = 0; k < 5; k++) mx = max(mx, rmq[k].query(col, col + len));
// if (len == 5 && row == 0) cout << mx << endl;
ans = min(ans, mx * len);
}
}
}
return ans;
}
void solve() {
int h, w;
cin >> h >> w;
vector<vector<char>> v(h, vector<char>(w));
for (auto& u : v) for (auto& p : u) cin >> p;
int ans = solve(v, h, w);
vector<vector<char>> vv(w, vector<char>(h));
for (int j = 0; j < w; j++)
for (int i = 0; i < h; i++)
vv[j][i] = v[i][j];
ans = min(ans, solve(vv, w, h));
cout << (ans <= h * w ? to_string(ans) : "impossible") << "\n";
}
int main() {
ios::sync_with_stdio(0); cin.tie(0);
tt = 1, tc = 1; // cin >> tt;
while (tt--) solve(), tc++;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3468kb
input:
5 5 ABCDE FGHIJ KLMNO PQRST VWXYZ
output:
25
result:
ok single line: '25'
Test #2:
score: 0
Accepted
time: 1ms
memory: 3536kb
input:
5 10 ABCDEABCDE FGHIJFGHIJ KLMNOKLMNO PQRSTPQRST VWXYZVWXYZ
output:
20
result:
ok single line: '20'
Test #3:
score: 0
Accepted
time: 1ms
memory: 3468kb
input:
5 10 WAALDLODOW AWWLAOODOW LOLADOWALO ADALLLWWOL WWOOAAAALO
output:
5
result:
ok single line: '5'
Test #4:
score: 0
Accepted
time: 1ms
memory: 3460kb
input:
2 3 WAL TER
output:
impossible
result:
ok single line: 'impossible'
Test #5:
score: 0
Accepted
time: 1ms
memory: 3676kb
input:
1 260 AWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWLDO
output:
260
result:
ok single line: '260'
Test #6:
score: 0
Accepted
time: 1ms
memory: 3504kb
input:
1 5 WALDO
output:
5
result:
ok single line: '5'
Test #7:
score: 0
Accepted
time: 1ms
memory: 3528kb
input:
5 5 WXXAL XALDO XDOXX ALXXX DOXXX
output:
9
result:
ok single line: '9'
Test #8:
score: 0
Accepted
time: 1ms
memory: 3536kb
input:
7 115 DVGTNMMOMTPGLREEHPNWWOVARKFSSAQNWBBSUIUXDTRLZXHJAVOQPZWNJDMCBJRVSJNTUSOGUYKBWVUEDGJJJZRIJAJONHUSUJVGMYRDNRKZZLYOKRB VVPSQMSDLFLEHIBTFMMRAWJFZTRVXOQJCNMPLYMWAXRXPXQWEDMWYTCQQBDGUACGWIQBIIRMTCYBQPKNWPYIRPHEIFHCPKYTVRSBBXUXVOCSLPJFRWM DUSXXJPYFRNCGGDJPDVDXGKLDBABDGMWBELWYWMQMQCRAHINEYSMTLXGUOBGAC...
output:
8
result:
ok single line: '8'
Test #9:
score: 0
Accepted
time: 0ms
memory: 3492kb
input:
43 6 MSKXQI PGFKAO YZSLPS LVMBUX QQJWVW GWVLPM HDBTRG WKHMGP RLGDEB TXYZEY LQRDJI IFIJZU STLLPN HDJOID NTIAZG KHQVHO UBUERZ PWBOBI UTIEJW KWEPPZ TVWEBQ JVFXYB QHKYCG DXJXMD BZGFOV RRHFKI PZUCBJ NUOPLE ZWVFVP NACTWZ XAJRUG XOBZIC EGHUGF TODGGA AYQHYD QPVLIQ HJLKOV WTRZJJ AXSPON LWRXIG VPUZOR ZDZQXK C...
output:
11
result:
ok single line: '11'
Test #10:
score: 0
Accepted
time: 1ms
memory: 3784kb
input:
2 461 ZOXPGJHVSWLVZYOPKFWBPPMFSEHNPDFUAPHPJMXDFNAOEVGFLUZLHLOUMCSYYTHNKNYXAHHJXCSXHVEONVWYKTZCYUKWRBLIRFTCWHSGWNSULYTMNQSFQQKGXTUUPRYZMDBPPEYNSTCXFCUREDPGHSIGHJGDRCIQJUNUHTCNHFLHMEEPDIXSRRDBYIJSWGJCDAVIPCUYPARKSSXHDSLYDNHZJSYXWDTBCKFYILISHVJXFLSGPVPEEICHWKENYXBAACFXLNVTNQMUENNYCSUZSWHBYXFPYPGUTFEUAR...
output:
7
result:
ok single line: '7'
Test #11:
score: 0
Accepted
time: 1ms
memory: 3556kb
input:
10 62 MEBVDGFNDFAVGQOYMVVJPUOPIUXNJZBVTPGMNDYKVEFITSAEKRFIGVOZSEPAFU JYIRCBPVQCIUAMGHUTVOEDNLVDTNBXUAMMJFZQPVUOKYGILFEVEKRYOKJCZKSX IVNCDWFOUQKLEBOKKDKAXOKHFKPRUUAMSUDIBBWRICUALRRGAKMADEKSRWASKK EVUMONXCMASAGLDEQAKFFJYPMVLNRRDXVFJJLBUYAUCRLUXBQWCVHNLSGZOIUW XFKUOZQJHLAWSUPLBRBFJQXHAFMSBCMFUVDLKEFDLN...
output:
6
result:
ok single line: '6'
Test #12:
score: 0
Accepted
time: 1ms
memory: 3512kb
input:
24 4 PTLR CFSQ WJRS KMOA UTUI LLBX OMJV VAPR OHEA ETZA YGJA XWYF AHYC ZRXT WBQG QSQR JBWY VQTC ZGFF USJI APJH TTGF PVKC JNOU
output:
impossible
result:
ok single line: 'impossible'
Test #13:
score: 0
Accepted
time: 0ms
memory: 3536kb
input:
9 8 WSWLWZTQ SEIXFVUV VRBEKFKR EAKHTYEP CIYZFNNE XHFBOKWE DXFWSGRK ONFJKUQY KUJQCJME
output:
32
result:
ok single line: '32'
Test #14:
score: 0
Accepted
time: 1ms
memory: 3488kb
input:
29 6 BVROIF KSZROD RWYYFV CHKFXG NANVXJ KSCOCH QIDLUT KPPHPF HGWTTN CCOJEV QZPPHL LZAUXY XICHTP RSMYEI MJEWDF IYRXBW GLJVXM DOONIH OPMUZW YYYLSE SGSPVZ WVORGQ BTWOIS NPIQKT CORXPN KMNLGT QTMVSW WFOJNS GQQZKO
output:
12
result:
ok single line: '12'
Test #15:
score: 0
Accepted
time: 1ms
memory: 3568kb
input:
6 30 YIEWUARANVJHLMMFIBBGKNDINMKCIH MYGXZOGUNRHSICKEECSLTIFSEDFDYO OENJCWJZMAEUJLJOEHPBSCKUCGMBPO GCETCKSYVVOFSTAIODZDVDHYGBHQPP RTKBTULQAGCFHEIYSYKGJNPCYFNNTD UTBYRFXJGQIBREELOWWVMKUBEQDINX
output:
12
result:
ok single line: '12'
Test #16:
score: 0
Accepted
time: 1ms
memory: 3548kb
input:
27 6 DXKWIJ SQFIKD ZOBIUI UTQRJN TUVCQZ CBRXHF ULHYRV QEQYBE LVJZNT NDAJAQ NTTRSY ETAYBI LWLWHA DCXBVH HKLOQT DLICSA ZNIROE MJRAVY RZBDOE TIIQDG OTZAOV WZNBBN GXSSXT NBXKTJ VTWNAU LXHDLS PBTUCR
output:
14
result:
ok single line: '14'
Test #17:
score: 0
Accepted
time: 1ms
memory: 3480kb
input:
21 8 OZSOIHXZ HMQRLUXE HIVETDEP DQJCTXNE SXDOHCYG TFYKEFJW TJGXULLS PMEJGSEF UYAHBHKS WALAUWUJ DQXLTFVG NVHTNPNA ILITJIOS NNFUIMPX BCUYEIFL VJWISWVQ HZNPZZJF HIJPMRJI FCXYRPSA WVOKEXQB GHYDZKBM
output:
16
result:
ok single line: '16'
Test #18:
score: 0
Accepted
time: 1ms
memory: 3596kb
input:
5 5 LAXXW ODLAX XXODX XXXLA XXXOD
output:
9
result:
ok single line: '9'
Test #19:
score: 0
Accepted
time: 1ms
memory: 3532kb
input:
5 5 XXXOD XXXLA XXODX ODLAX LAXXW
output:
9
result:
ok single line: '9'
Test #20:
score: 0
Accepted
time: 1ms
memory: 3472kb
input:
5 5 DOXXX ALXXX XDOXX XALDO WXXAL
output:
9
result:
ok single line: '9'
Test #21:
score: 0
Accepted
time: 1ms
memory: 3536kb
input:
9 9 XXXODOXXX XXXLALXXX XXODXDOXX ODLAXALDO LAXXWXXAL ODLAXALDO XXODXDOXX XXXLALXXX XXXODOXXX
output:
9
result:
ok single line: '9'
Test #22:
score: 0
Accepted
time: 1ms
memory: 3500kb
input:
1 1 W
output:
impossible
result:
ok single line: 'impossible'
Test #23:
score: 0
Accepted
time: 50ms
memory: 5360kb
input:
176 472 KUMYIMXYCXUKCQXPDEOURBXYMTQVXOCYNZYCPKNAYWZMKMKBDYCCLJCWHRWKFAVYRDDQBNONSIQEKWJVUUGICMHFXTRUGLVHELGGSSFMEWXMWKUVMJHBSECGUFVXPKHJGDLNCYWPAAAOAVNKUXXKMLXJSLTJUAJJWVZMJCKTLDRELSUACYKBNRFFZMJODJQQYRTAFUJVENRLBFCQHKCSDBYSMYOYBUAXNDYCSSFYRGTLSMDOEVOWPXPBFBAQWFWEIGOEPUQTGTXTCLOCTUXKEWKFRKVSEPVIMFUA...
output:
5
result:
ok single line: '5'
Test #24:
score: 0
Accepted
time: 71ms
memory: 5788kb
input:
398 244 QUHZAOKHAAFETIKDGMDIOXCZTCNQGQOVKSVMGHWDBJJPZCGFVZOEVWEZQTGOTYHARAKLXBCBTONLOHBPSULLPTZPGLAFMIMFQWTWXZHDJVBEJVQRLCRDTWWDLHCLPQBFWFHOJAMSUHVQIUOKADYJXWCLPVJMULBAHOCXCKLTCIHZRANLLUPPENLIIVVDQSAQIJQPFMWQZEEKELEZTHOPIKOTUJOWPWSFXBENJNPOOWYRCPCGGZCP GZESAWOKTMDKVDBKPVDXIYXVCWVKSUSUQVUDBMWCWTFFMJR...
output:
6
result:
ok single line: '6'
Test #25:
score: 0
Accepted
time: 29ms
memory: 4564kb
input:
238 211 CORYOZFTAYVYKDDVPCNFQXWJNVKWJRVQNXGCIFBRIUVBKBJDERPYCJLDXLSGKNZKHHJWYEDPODCKAYFIJELZXJVKKWQICLXSUZRTZQNPGRQCOFCPGENFNZBRUZWKBNTMUNZEPAUMMAMWMTJWPBZKMENDJPMFFEEMTKITMKGOZXRYGGCGUTWMQEAMGKZFACJREXAXOLCPMLUFGHRBBDH HXRBZJEGCZKYRNJXNUIVJWROYDAPATLOJNJDPYYLHZCGBQDTGAPWIVNGIUZDLSOTWKBLWJELJWIFORGV...
output:
5
result:
ok single line: '5'
Test #26:
score: 0
Accepted
time: 6ms
memory: 3828kb
input:
293 43 HJXILPOWPUYLDYHSQHPDKCRVUSVROIQPJUJHOVOUDXR QFUEWEYZLSXJKPUNXGDUCVPGIZJUAXJUMIOAFIBSZJT BJFTQUWPOTLSPPRRMGQPRQYZDPSSORDIBYIKKRMQHUP BXCPCTEDPRPYZRNUQYLMKHNVCAGVAOPIGBKDWGJIIKV NQUYAFZEZSTUGYOVRYIISVGVKEVXDKBLTYBHDZNZTRQ VQHJKXGJZYNDBCNTYRPMOHOWVZBJXLDXXVKYOZQUVLU KJVRYGHWMJEYQVGHTNJQJWKOLFRFZ...
output:
6
result:
ok single line: '6'
Test #27:
score: 0
Accepted
time: 12ms
memory: 3964kb
input:
445 58 KGVWGWIMIGQVKDWAQXZCYKSEEXIXXBWHGPAJWXKCMXNTRRLEICEPLZJHQX TMPIZUDRGKATXPLULHFFTIDEHAWNWGHYCOTRIWGJIUDOAZUVBESNEQMGQM GEDWKZHNFVTRPPGGPYUJCISCENNROWSRBTWROXTEDOGGFHRTQCCDIITWCQ XPHWSDWZHEZBCIXQREGTYCAJLGBUQADEQMPHRYURLYTMATMRGYKSYTHMKY YWMMNBDNIIAUOUWEWLMNQYQRCREDBOGXDEXOAEMPCZBQEKCTDYVKWOGFO...
output:
6
result:
ok single line: '6'
Test #28:
score: 0
Accepted
time: 30ms
memory: 4648kb
input:
544 95 ZFVLAMXMQPASGTJZSABPYDSOQDVIXDUWJRJUAQKEBHCNHFZNIOTGZXUQIJHEHLICCEENVBZEJKBQBZFOLRKSJFZELDQEWUJ XZYESFYFLDFSBPAWVOPWEUOPLKZYFOFLWKWHHMVLGSSCPYEHUBOGRWRDXQLQLVGMOAALAIRCBXWUHKMEENNHVHMAZEDEECQ ODJUZXZOGXVSSSKWTCTJNVKZYDRWPBWFFAJVESWDEOQLOYAYFXNCDCMCFCOTHRWANPVSKCGAOFFCZCALAOVBHBOPWYDEJVY DKOKG...
output:
5
result:
ok single line: '5'
Test #29:
score: 0
Accepted
time: 28ms
memory: 4876kb
input:
61 950 ESBJPSCSQAEXMVGEVQUFMVAFHVXTPYQFWNJNLBZBAJXRNWIGQUUBBZHJKVFNRJHRVOLFGXNCXOPUZAXQZDYPHQICOGACPJUBLZJININNZPNNVCIAIZRWGKDZXOYAGLWQNXSRKHMAKJPAHNKIOHYGGOISXGSIFQBIJKWXDUDVLQSKGZUZJSXFYSJTSFEDIOQITYMFIPMCTJLHDFYFLVHGLLNCFNGDNLSINXSUEBAJSRRZEOACSTSOVPQJUCYGKYNRAAQGMNTZXIXLMAANUXXJGSPIPQCDROHLSXRDO...
output:
6
result:
ok single line: '6'
Test #30:
score: 0
Accepted
time: 38ms
memory: 5008kb
input:
283 234 ADHGGMRRPRGHQBLDXQDQBGUSXXFLPDQCDEBUSHAPDXRTSRCUKYTQYIPQMKFNPRTIJWFPSJPKPXDFKIGBBAZGPKLANSVTHLDOJNJNWGCLRTKAAIRYGPCNZZPTYUSYIQZZHEDOMHMANKKPCIPACNCMNRAHMAIBZKVPWEILETCCVMKUNFDTHGBHIKBMFDWTFKMYJWKMBSATOHQKVRHEGNCPQRSEBTEHIVZQEDSVOZMTUT CJWXZVIVIYZGENJMMXBZSGYHMYFDJBZKNJUVJIIDOTRCOFJYLXGHKOAIP...
output:
5
result:
ok single line: '5'
Test #31:
score: 0
Accepted
time: 3ms
memory: 3632kb
input:
46 122 WPQFCTULEZOUZQTUOQBFGBMGCVQCXUCAZHICDJYELAOQCHUWEIZCPBDBSQGGFXYINHOLZZJBOVDZQWHFCSXSIASTLRMJOWICVDLECOZBZGSNKDCSZPGGHJDMTK CEFHGGTJOHWBLZHOMUGGRRIUBVOPPGCFNWOFCRAANAYUSJWGKQMEICCRBOHDNYXXDQGQBFJVSTIYXTRZBTEZUGTDDBPRXRABYPGHYTPNUSCXWWNKKIGMWHQFUI TPEKCTRPXJEDFPDYLAGRFDHZDMOKXLYEBELAMGOHDJJGRQV...
output:
5
result:
ok single line: '5'
Test #32:
score: 0
Accepted
time: 19ms
memory: 4564kb
input:
46 1003 LFUCKMVFUPVHECFGASOYVWPPRYFRDQINNSGXSAJOTEXPQKXTBGYEQWKRGEWRAIBRKIWRVGYYNIAZRWGXAWSIHFNSLPGYELNFATKTOLFUQIDKMZTZUCIYHZIKKNZQUCIIWKZFMMWZMGPQUYBWTRBVUBYJWNMJXKBJIZNYFZCIETXBVUFCRUVKUBSNMTLZSIUPDYNMHRNFLINKOIBBMFEETHXRMSMQJZCFSMGDZCBNIRHUOKNUPQTFRLJBGJEMIPKLNOFMJWUJWUBAAMUZGXZLHPJKKBATXROMKGHY...
output:
6
result:
ok single line: '6'
Test #33:
score: 0
Accepted
time: 1ms
memory: 3596kb
input:
5 5 WALDO ALODW LODWA ODWAL DWALO
output:
5
result:
ok single line: '5'
Test #34:
score: 0
Accepted
time: 70ms
memory: 5748kb
input:
316 316 WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWOXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOXXXXXXXXXXXXXXXXXXXXXDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXLXXXDXXX...
output:
80264
result:
ok single line: '80264'
Test #35:
score: 0
Accepted
time: 1ms
memory: 3536kb
input:
5 5 XXXXX XXWXX XALDX XXOXX XXXXX
output:
9
result:
ok single line: '9'
Test #36:
score: 0
Accepted
time: 0ms
memory: 3532kb
input:
5 5 XXXXX XWXAX XXLXX XDXOX XXXXX
output:
9
result:
ok single line: '9'
Test #37:
score: 0
Accepted
time: 1ms
memory: 3612kb
input:
49 49 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...
output:
25
result:
ok single line: '25'