QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#662668#4828. Four Plus FourN_z_0 957ms27668kbC++238.1kb2024-10-21 08:55:252024-10-21 08:55:26

Judging History

你现在查看的是最新测评结果

  • [2024-10-21 08:55:26]
  • 评测
  • 测评结果:0
  • 用时:957ms
  • 内存:27668kb
  • [2024-10-21 08:55:25]
  • 提交

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