QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#662659#4828. Four Plus FourN_z_0 932ms27636kbC++237.9kb2024-10-21 08:45:242024-10-21 08:45:25

Judging History

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

  • [2024-10-21 08:45:25]
  • 评测
  • 测评结果:0
  • 用时:932ms
  • 内存:27636kb
  • [2024-10-21 08:45:24]
  • 提交

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);
	while(1)
	{
		auto seed=mt0();
		mt19937 mt(seed);
		for(int x=0;x<d8.size();x++)
		{
			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: 931ms
memory: 23724kb

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:

prow doss pass
tiro cero huic

input:

keys
4
prow doss
huic cero
pass prow
doss pass
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: 893ms
memory: 23676kb

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:

ruer keir kier

input:

keys
1
keir kier
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: 932ms
memory: 23768kb

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
afar afar afar
arak arak arak

input:

keys
18
arak arak
arak arak
afar afar
arak arak
arak arak
arak arak
afar afar
afar afar
arak arak
afar afar
arak arak
afar afar
arak arak
arak arak
arak arak
afar afar
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: 0
Wrong Answer
time: 929ms
memory: 27636kb

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
afar afar afar
aals aals aals
abas abas abas
anoa asea lean
aper aper aper
boas anas sand
alba alba alba
lase lads bade
aahs aahs aahs
abba abba abba
east best site
abri abri abri
bias babe sibb
baal tail blab
abbe abbe abbe
abed abed abed
moas bams does
ambo ambo ambo
cane used bens
...

input:

keys
60000
alec nail
heel lees
efts sift
sign ones
nidi iced
foin girn
stub tsks
kent sike
abri read
firs fork
mire aero
moos nods
sola alls
fila ball
sets trek
dean duad
dale noel
sore roes
sith haet
spas stay
beth beth
care case
tied tern
recs slog
noir darn
flea sear
side deer
fork fork
tang 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:

wrong answer query 411: read leveller but expected beguiler