QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#662668 | #4828. Four Plus Four | N_z_ | 0 | 957ms | 27668kb | C++23 | 8.1kb | 2024-10-21 08:55:25 | 2024-10-21 08:55:26 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
struct time_helper{
#ifdef LOCAL
clock_t time_last;time_helper(){time_last=clock();}void test(){auto time_now=clock();std::cerr<<"time:"<<1.*(time_now-time_last)/CLOCKS_PER_SEC<<";all_time:"<<1.*time_now/CLOCKS_PER_SEC<<std::endl;time_last=time_now;}~time_helper(){test();}
#else
void test(){}
#endif
}time_helper;
#ifdef LOCAL
#include"dbg.h"
#else
#define dbg(...) (__VA_ARGS__)
#endif
namespace Fread{const int SIZE=1<<16;char buf[SIZE],*S,*T;inline char getchar(){if(S==T){T=(S=buf)+fread(buf,1,SIZE,stdin);if(S==T)return'\n';}return *S++;}}namespace Fwrite{const int SIZE=1<<16;char buf[SIZE],*S=buf,*T=buf+SIZE;inline void flush(){fwrite(buf,1,S-buf,stdout);S=buf;}inline void putchar(char c){*S++=c;if(S==T)flush();}struct NTR{~NTR(){flush();}}ztr;}
#define getchar Fread::getchar
#define putchar Fwrite::putchar
int print_precision=10;bool print_T_endl=1;char print_between=' ';
template<typename T>struct is_char{static constexpr bool value=(std::is_same<T,char>::value||std::is_same<T,signed char>::value||std::is_same<T,unsigned char>::value);};template<typename T>struct is_integral_ex{static constexpr bool value=(std::is_integral<T>::value||std::is_same<T,__int128>::value)&&!is_char<T>::value;};template<typename T>struct is_floating_point_ex{static constexpr bool value=std::is_floating_point<T>::value||std::is_same<T,__float128>::value;};namespace Fastio{struct Reader;struct Writer;template<size_t id>struct read_tuple{template<typename...T>static void read(Reader&stream,std::tuple<T...>&x){read_tuple<id-1>::read(stream,x);stream>>get<id-1>(x);}};template<>struct read_tuple<0>{template<typename...T>static void read([[maybe_unused]]Reader&stream,[[maybe_unused]]std::tuple<T...>&x){}};template<size_t id>struct print_tuple{template<typename...T>static void print(Writer&stream,const std::tuple<T...>&x){print_tuple<id-1>::print(stream,x);putchar(print_between);stream<<get<id-1>(x);}};template<>struct print_tuple<1>{template<typename...T>static void print(Writer&stream,const std::tuple<T...>&x){stream<<get<0>(x);}};template<>struct print_tuple<0>{template<typename...T>static void print([[maybe_unused]]Writer&stream,[[maybe_unused]]const std::tuple<T...>&x){}};
struct Reader{template<typename T>typename std::enable_if_t<std::is_class<T>::value,Reader&>operator>>(T&x){for(auto &y:x)*this>>y;return *this;}template<typename...T>Reader&operator>>(std::tuple<T...>&x){read_tuple<sizeof...(T)>::read(*this,x);return *this;}template<typename T>typename std::enable_if_t<is_integral_ex<T>::value,Reader&>operator>>(T&x){char c=getchar();short f=1;while(c<'0'||c>'9'){if(c=='-')f*=-1;c=getchar();}x=0;while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+(c^48);c=getchar();}x*=f;return *this;}template<typename T>typename std::enable_if_t<is_floating_point_ex<T>::value,Reader&>operator>>(T&x){char c=getchar();short f=1,s=0;x=0;T t=0;while((c<'0'||c>'9')&&c!='.'){if(c=='-')f*=-1;c=getchar();}while(c>='0'&&c<='9'&&c!='.')x=x*10+(c^48),c=getchar();if(c=='.')c=getchar();else return x*=f,*this;while(c>='0'&&c<='9')t=t*10+(c^48),s++,c=getchar();while(s--)t/=10.0;x=(x+t)*f;return*this;}template<typename T>typename std::enable_if_t<is_char<T>::value,Reader&>operator>>(T&c){c=getchar();while(c=='\n'||c==' '||c=='\r')c=getchar();return *this;}Reader&operator>>(char*str){int len=0;char c=getchar();while(c=='\n'||c==' '||c=='\r')c=getchar();while(c!='\n'&&c!=' '&&c!='\r')str[len++]=c,c=getchar();str[len]='\0';return*this;}template<typename T1,typename T2>Reader&operator>>(std::pair<T1,T2>&x){*this>>x.first>>x.second;return *this;}Reader&operator>>(std::string&str){str.clear();char c=getchar();while(c=='\n'||c==' '||c=='\r')c=getchar();while(c!='\n'&&c!=' '&&c!='\r')str.push_back(c),c=getchar();return*this;}Reader(){}}cin;const char endl='\n';
struct Writer{typedef __int128 mxdouble;template<typename T>typename std::enable_if_t<std::is_class<T>::value,Writer&>operator<<(const T&x){for(auto q:x){*this<<q;if(!is_class<decltype(q)>::value)*this<<print_between;}if(!is_class<typename T::value_type>::value&&print_T_endl)*this<<'\n';return *this;}template<typename...T>Writer&operator<<(const std::tuple<T...>&x){print_tuple<sizeof...(T)>::print(*this,x);if(print_T_endl)*this<<'\n';return *this;}template<typename T>typename std::enable_if_t<is_integral_ex<T>::value,Writer&>operator<<(T x){if(x==0)return putchar('0'),*this;if(x<0)putchar('-'),x=-x;static int sta[45];int top=0;while(x)sta[++top]=x%10,x/=10;while(top)putchar(sta[top]+'0'),--top;return*this;}template<typename T>typename std::enable_if_t<is_floating_point_ex<T>::value,Writer&>operator<<(T x){if(x<0)putchar('-'),x=-x;x+=pow(10,-print_precision)/2;mxdouble _=x;x-=(T)_;static int sta[45];int top=0;while(_)sta[++top]=_%10,_/=10;if(!top)putchar('0');while(top)putchar(sta[top]+'0'),--top;putchar('.');for(int i=0;i<print_precision;i++)x*=10;_=x;while(_)sta[++top]=_%10,_/=10;for(int i=0;i<print_precision-top;i++)putchar('0');while(top)putchar(sta[top]+'0'),--top;return*this;}template<typename T>typename std::enable_if_t<is_char<T>::value,Writer&>operator<<(const T&c){putchar(c);return*this;}Writer&operator<<(char*str){int cur=0;while(str[cur])putchar(str[cur++]);return *this;}Writer&operator<<(const char*str){int cur=0;while(str[cur])putchar(str[cur++]);return*this;}template<typename T1,typename T2>Writer&operator<<(const std::pair<T1,T2>&x){*this<<x.first<<print_between<<x.second;if(print_T_endl)*this<<'\n';return *this;}Writer&operator<<(const std::string&str){int st=0,ed=str.size();while(st<ed)putchar(str[st++]);return*this;}Writer(){}}cout;}
#define cin Fastio::cin
#define cout Fastio::cout
#define endl Fastio::endl
template<class Fun>class y_combinator_result{Fun fun_;public:template<class T>explicit y_combinator_result(T &&fun): fun_(std::forward<T>(fun)) {}template<class ...Args>decltype(auto) operator()(Args &&...args){return fun_(std::ref(*this), std::forward<Args>(args)...);}};template<class Fun>decltype(auto) y_combinator(Fun &&fun){return y_combinator_result<std::decay_t<Fun>>(std::forward<Fun>(fun));}
void init();void solve(int tc);
main()
{
init();int t=1;
// cin>>t;
for(int tc=1;tc<=t;tc++)solve(tc);
}
tuple<int,int,int>res[28558];
map<pair<int,int>,int>ires;
mt19937 mt0(0);
void init()
{
}
void oper(vector<string>d8,vector<string>d4)
{
for(auto&q:d8)sort(q.begin(),q.end());
for(auto&q:d4)sort(q.begin(),q.end());
auto include=[&](const string&a,const string&b)
{
return includes(a.begin(),a.end(),b.begin(),b.end());
};
vector<vector<int>>nd(d8.size());
for(int x=0;x<d8.size();x++)
for(int y=0;y<d4.size();y++)
if(include(d8[x],d4[y]))nd[x].emplace_back(y);
vector<int>id(d8.size());
for(int x=0;x<d8.size();x++)
id[x]=x;
sort(id.begin(),id.end(),[&](auto a,auto b){return nd[a].size()<nd[b].size();});
while(1)
{
auto seed=mt0();
mt19937 mt(seed);
for(int _=0;_<d8.size();_++)
{
int x=id[_];
if(nd[x].size()<3)continue;
int u=nd[x][0],v=nd[x][0],w=nd[x][0],lim=1000;
while((ires.count({u,v})||ires.count({u,w})||ires.count({v,w}))&&--lim)
{
u=nd[x][mt()%nd[x].size()];
v=nd[x][mt()%nd[x].size()];
w=nd[x][mt()%nd[x].size()];
}
// if(lim==0)goto fail;
res[x]={u,v,w};
ires[{u,v}]=ires[{v,u}]=ires[{u,w}]=ires[{w,u}]=ires[{v,w}]=ires[{w,v}]=x;
// cerr<<x<<endl;
}
cerr<<seed<<endl;
break;
fail:;
ires.clear();
}
}
void solve([[maybe_unused]]int tc)
{
string role;
cin>>role;
if(role=="password")
{
int n;
cin>>n;
vector<string>s(n);
cin>>s;
int dn;
cin>>dn;
vector<string>d8(dn);
cin>>d8>>dn;
vector<string>d4(dn);
cin>>d4;
oper(d8,d4);
for(auto s:s)
{
auto v=lower_bound(d8.begin(),d8.end(),s)-d8.begin();
auto[a,b,c]=res[v];
cout<<d4[a]<<' '<<d4[b]<<' '<<d4[c]<<endl;
}
}
else
{
int n;
cin>>n;
vector<pair<string,string>>s(n);
cin>>s;
int dn;
cin>>dn;
vector<string>d8(dn);
cin>>d8>>dn;
vector<string>d4(dn);
cin>>d4;
oper(d8,d4);
for(auto [s0,s1]:s)
{
auto a=lower_bound(d4.begin(),d4.end(),s0)-d4.begin();
auto b=lower_bound(d4.begin(),d4.end(),s1)-d4.begin();
cout<<d8[ires[{a,b}]]<<endl;
}
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 917ms
memory: 24104kb
input:
password 2 password couthier 28558 aardvark aardwolf aasvogel abacuses abalones abampere abandons abapical abasedly abashing abatable abatises abattoir abbacies abbatial abbesses abdicate abdomens abdomina abducens abducent abducing abducted abductee abductor abelmosk aberrant abetment abettals abet...
output:
pads proa sods hoer thru thio
input:
keys 4 pads proa thio thru sods pads proa sods 28558 aardvark aardwolf aasvogel abacuses abalones abampere abandons abapical abasedly abashing abatable abatises abattoir abbacies abbatial abbesses abdicate abdomens abdomina abducens abducent abducing abducted abductee abductor abelmosk aberrant abet...
output:
password couthier password password
result:
ok OK
Test #2:
score: 100
Accepted
time: 921ms
memory: 24040kb
input:
password 1 quirkier 28558 aardvark aardwolf aasvogel abacuses abalones abampere abandons abapical abasedly abashing abatable abatises abattoir abbacies abbatial abbesses abdicate abdomens abdomina abducens abducent abducing abducted abductee abductor abelmosk aberrant abetment abettals abetters abet...
output:
keir keir keir
input:
keys 1 keir keir 28558 aardvark aardwolf aasvogel abacuses abalones abampere abandons abapical abasedly abashing abatable abatises abattoir abbacies abbatial abbesses abdicate abdomens abdomina abducens abducent abducing abducted abductee abductor abelmosk aberrant abetment abettals abetters abettin...
output:
quirkier
result:
ok OK
Test #3:
score: 100
Accepted
time: 923ms
memory: 24032kb
input:
password 3 aardvark aardwolf aardvark 28558 aardvark aardwolf aasvogel abacuses abalones abampere abandons abapical abasedly abashing abatable abatises abattoir abbacies abbatial abbesses abdicate abdomens abdomina abducens abducent abducing abducted abductee abductor abelmosk aberrant abetment abet...
output:
arak arak arak alfa faro awol arak arak arak
input:
keys 18 arak arak arak arak awol alfa arak arak arak arak arak arak faro awol alfa faro arak arak awol faro arak arak alfa awol arak arak arak arak arak arak faro alfa arak arak arak arak 28558 aardvark aardwolf aasvogel abacuses abalones abampere abandons abapical abasedly abashing abatable abatise...
output:
aardvark aardvark aardwolf aardvark aardvark aardvark aardwolf aardwolf aardvark aardwolf aardvark aardwolf aardvark aardvark aardvark aardwolf aardvark aardvark
result:
ok OK
Test #4:
score: 100
Accepted
time: 943ms
memory: 27584kb
input:
password 10000 aardvark aardwolf aasvogel abacuses abalones abampere abandons abapical abasedly abashing abatable abatises abattoir abbacies abbatial abbesses abdicate abdomens abdomina abducens abducent abducing abducted abductee abductor abelmosk aberrant abetment abettals abetters abetting abetto...
output:
arak arak arak alfa faro awol levo vela legs suba sues scab sone bens able pear rape bear nana ados nabs pica pica clap blae alae dabs anas shin shin tale teal baal eats etas bite bait brat boar bice ices baba blat lati bail sass sabe sees dite date dita dame send nome maid bima damn send used cues ...
input:
keys 60000 lien acne fees fees life fisc zoea size cedi dice gong grig kerb turk nets kite bide izar tiro eros ager rami need nods sall loaf bale fila stir tike duad etna dace calo euro crus shea hies paty psst etch cite eras rale ties nixe ergo cero faro fard sere file reds eses fork fork inia agin...
output:
cleaning fleeches felsitic agonizes coincide frogging bruskest dinkiest arabized forkiest armigero endosome falloffs fallible briskest denudate canoodle conquers dashiest flypasts bioethic carrells dextrins cloggers fricando filarees dressier formwork aviating dogeship arousals celestas buttocks epi...
result:
ok OK
Test #5:
score: 0
Wrong Answer
time: 957ms
memory: 27668kb
input:
password 10000 fucoidal fuddling fuehrers fuellers fuelling fuelwood fugacity fuggiest fugitive fugleman fuglemen fuguists fulcrums fulfills fullback fullered fullface fullness fulmined fulmines fulminic fumarase fumarate fumarole fumatory fumblers fumbling fumeless fumelike fumettes fumigant fumiga...
output:
acid cuif fold fund find gild rhus surf errs leer full user fuel lung gien leud loof delf cagy cagy cagy gies gust gits etui five gift lung maun alum neem feel glen sits guts fuss culm curf flus full sill sill call full calk delf full feel call cull calf fuss less feus limn deil idem self mule fins ...
input:
keys 60000 tine rani tiro tore born boll ordo pond peso erst kept kept pois poms birl brio doer doer loft trop mace amie gits urns prey upby vote note yaps pays nona anon wink wins ease else ayin anil ides deli eery eery scan cote puri dice sure rout wort roil mono moan cell clay emes umps name tuts...
output:
inertias hitherto hornbill proponed pollster pokeroot imposted overbill overword platform maverick outrings plumbery inventor pansophy nanowatt knowings realiser quaintly linseeds greenery notecase pictured posturer milkwort moonbeam rectally presumer nutmeats legality hidrosis panderer haunches ove...
result:
wrong answer query 4808: read nuzzling but expected guzzling