好久没刷题了,也好久没更新了。碰巧A了到新出的水题,便把题解放这吧。题意很简单,因此代码也很渣的= =
#include <iostream>
#include <algorithm>
using namespace std;
int n,m,p1,p2,t,tmp,l,maxl,a[110],b[110],c[110];
bool v[110];
bool cmp1(int a,int b) {
return a>b;
}
bool cmp2(int a,int b) {
if (a%10<b%10) return 1;
if (a%10==b%10) return a<b;
return 0;
}
int main() {
scanf("%d",&t);
while (t--) {
scanf("%d%d",&n,&m);
memset(v,0,sizeof(v));
p1 = 0;
for (int i=1;i<=n;i++) {
scanf("%d",&tmp);
if (!v[tmp]) {
v[tmp] = true;
a[++p1] = tmp;
}
}
memset(v,0,sizeof(v));
p2 = 0;
for (int i=1;i<=m;i++) {
scanf("%d",&tmp);
if (!v[tmp]) {
v[tmp] = true;
b[++p2] = tmp;
}
}
sort(a+1,a+p1+1,cmp1);
sort(b+1,b+p2+1,cmp1);
maxl = 0;
for (int i=1;i<=p1;i++)
for (int j=1;j<=p2;j++)
if (a[i]==b[j]) {
int k;
for (k=0;i+k<=p1 && j+k<=p2;k++)
if (a[i+k]!=b[j+k]) break;
if (maxl<k) {
maxl = k;
l = i;
}
}
if (maxl==0) {
printf("NONE\n");
continue;
}
for (int i=l;i<l+maxl;i++)
c[i-l+1] = a[i];
for (int i=1;i<maxl;i++)
printf("%d ",c[i]);
printf("%d\n",c[maxl]);
sort(c+1,c+maxl+1,cmp2);
for (int i=1;i<maxl;i++)
printf("%d ",c[i]);
printf("%d\n",c[maxl]);
}
return 0;
}