結果

問題 No.896 友達以上恋人未満
コンテスト
ユーザー vjudge1
提出日時 2026-08-24 21:31:48
言語 C++14
(gcc 15.2.0 + boost 1.90.0)
コンパイル:
g++-15 -O2 -lm -std=c++14 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
MLE  
実行時間 -
コード長 1,533 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,014 ms
コンパイル使用メモリ 180,088 KB
実行使用メモリ 213,120 KB
最終ジャッジ日時 2026-08-24 21:32:04
合計ジャッジ時間 6,841 ms
ジャッジサーバーID
(参考情報)
judge1_0 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 6 MLE * 1
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

int m,n;
int mulx,addx,muly,addy,mod;
int x[1011],y[1011],a[1011],b[1011];
ll z[(1 << 24) + 11],f[(1 << 24) + 11];

int main() {
//	freopen("friend.in","r",stdin);
//	freopen("friend.out","w",stdout);
	scanf("%d%d",&m,&n);
	scanf("%d%d%d%d%d",&mulx,&addx,&muly,&addy,&mod);
	for(int i=1;i<=m;i++)
		scanf("%d",&x[i]);
	for(int i=1;i<=m;i++)
		scanf("%d",&y[i]);
	for(int i=1;i<=m;i++)
		scanf("%d",&a[i]);
	for(int i=1;i<=m;i++)
		scanf("%d",&b[i]);
	int prex = 0,prey = 0,prea = 0,preb = 0;
	for(int i=1;i<=n;i++) {
		int xi,yi,ai,bi;
		if (i <= m) {
			xi = x[i];
			yi = y[i];
			ai = a[i];
			bi = b[i];
		}
		else {
			xi = (1ll * prex * mulx + addx) % mod;
			yi = (1ll * prey * muly + addy) % mod;
			ai = (1ll * prea * mulx + addx + mod - 1) % mod + 1;
			bi = (1ll * preb * muly + addy + mod - 1) % mod + 1;
		}
		z[xi] += yi;
		prex = xi;
		prey = yi;
		prea = ai;
		preb = bi;
	}
	for(int d=1;d<mod;d++) {
		for(int k=d;k<mod;k+=d)
			f[d] += z[k];
	}
	ll ans = 0;
	prea = 0;
	preb = 0;
	for(int i=1;i<=n;i++) {
		int ai,bi;
		if (i <= m) {
			ai = a[i];
			bi = b[i];
		}
		else {
			ai = (1ll * prea * mulx + addx + mod - 1) % mod + 1;
			bi = (1ll * preb * muly + addy + mod - 1) % mod + 1;
		}
		ll ab = 1ll * ai * bi;
		ll cntf = 0,cntl = 0;
		if (ai < mod)
			cntf = f[ai];
		if (ab < mod)
			cntl = f[ab];
		ll res = cntf - cntl;
		if (i <= m)
			printf("%lld\n",res);
		ans ^= res;
		prea = ai;
		preb = bi;
	}
	printf("%lld",ans);
	return 0;
}
0