题目:
题解:
哇这个题用bitset直送50啊,k=2可以搞一搞,然后k=3小的也可以弄,这样有80啦
行了暴力我就很满意了
正解好像有随机化,挖坑待填
代码:
80pts
#include <bitset>
#include <vector>
#include <cstdio>
#include <cstring>
using namespace std;
const int N=200005;
bitset<105>a[N],sb;
vector<int>b[N];
int main()
{
int n,d,k;scanf("%d%d%d",&n,&d,&k);
if (k==2)
{
for (int i=1;i<=n;i++)
for (int j=1;j<=d;j++)
{
int x;scanf("%d",&x);
x%=k; a[i][j]=x;
}
for (int i=1;i<=n;i++)
for (int j=i+1;j<=n;j++)
{
sb=a[i]&a[j];
if (sb.count()%k==0) {printf("%d %d",i,j);return 0;}
}
printf("-1 -1");
}else
{
for (int i=1;i<=n;i++)
for (int j=1;j<=d;j++)
{
int x;scanf("%d",&x);
x%=k; b[i].push_back(x);
}
for (int i=1;i<=n;i++)
for (int j=i+1;j<=n;j++)
{
int now=0;
for (int l=1;l<=d;l++)
{
now=now+b[i][l-1]*b[j][l-1];
now%=k;
}
if (now==0) {printf("%d %d",i,j);return 0;}
}
printf("-1 -1");
}
}