记录编号 274037 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 [NOI 2013]向量内积 最终得分 100
用户昵称 Gravatar神利·代目 是否通过 通过
代码语言 C++ 运行时间 0.502 s
提交时间 2016-06-26 11:57:39 内存使用 20.17 MiB
显示代码纯文本
/*
神题。。。
题解:
http://dffxtz.logdown.com/posts/197950-noi2013-vector-inner-product
*/
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 100010
#define M 110
#define rd ((rand_now=((long long)rand_now*19981206+2010527)%1000000009)/97)
#define fastcall __attribute__((optimize("-Os")))
#define IL __inline__ __attribute__((always_inline))
fastcall IL void in(register int&x){for(x=getchar();x<48;x=getchar());x^=48;for(register int tmp=getchar();47<tmp;tmp=getchar())x=x*10+(tmp^48);}
int n,m,mod,rand_now=1000003,a[N][M],q[N],b[M],c[M][M];
inline bool check(int x,int y){
	int i,tmp=0;
	for(i=1;i<=m;++i)tmp+=a[x][i]*a[y][i];
	return !(tmp%mod);
}
inline int sol(int x){
	int ans=0,i,j;
	if(mod==2){
		for(int i=1;i<=m;b[i]^=a[x][i],++i)
		    ans^=b[i]&a[x][i];
	}else{
		for(int i=1;i<=m;++i)
		    for(int j=1;j<=m;c[i][j]+=a[x][i]*a[x][j],++j)
		        ans+=c[i][j]*a[x][i]*a[x][j];
	}return ans%mod;
}
int main(){
	freopen("meow.in","r",stdin);
	freopen("meow.out","w",stdout);
	in(n),in(m),in(mod);
	for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)
		in(a[i][j]),a[i][j]%=mod;
	for(int i=1;i<=n;++i)q[i]=i;
	for(int cas=10-mod;cas--;){
		if(mod==2)memset(b,0,sizeof b);
		else memset(c,0,sizeof c);
		for(int i=2;i<=n;++i)std::swap(q[i],q[rd%(i-1)+1]);
		for(int i=1;i<=n;++i)if(sol(q[i])!=(i-1)%mod)
		    for(int j=1;j<i;++j)if(check(q[i],q[j])){
				if(q[i]>q[j])std::swap(i,j);
				printf("%d %d\n",q[i],q[j]);
				return 0;
		    }
	}puts("-1 -1");
	//while(1);
}