結果
| 問題 |
No.5001 排他的論理和でランニング
|
| ユーザー |
|
| 提出日時 | 2018-03-25 10:22:59 |
| 言語 | C (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 61 ms / 1,500 ms |
| コード長 | 715 bytes |
| コンパイル時間 | 98 ms |
| 実行使用メモリ | 6,148 KB |
| スコア | 25,755,979 |
| 最終ジャッジ日時 | 2020-03-12 20:52:57 |
|
ジャッジサーバーID (参考情報) |
judge6 / |
| 純コード判定しない問題か言語 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 50 |
ソースコード
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
static unsigned long y = 2463534242;
unsigned long xorshift(void) {
y = y ^ (y << 13); y = y ^ (y >> 17);
return y = y ^ (y << 5);
}
int main(void) {
y = time(NULL);
int N, M, A[100000];
scanf("%d%d\n", &N, &M);
int curr = 0;
for (int i = 0; i < N; ++i) {
scanf("%d", &A[i]);
curr ^= A[i];
}
for (;;) {
int from = xorshift()%M;
int to = M + xorshift()%(N-M);
curr ^= A[from] ^ A[to];
A[from] ^= A[to];
A[to] ^= A[from];
A[from] ^= A[to];
if (curr == (1<<20) - 1) {
break;
}
}
// printf("%d\n", curr);
for (int i = 0; i < M; ++i) {
printf("%d%c", A[i], i < M-1 ? ' ' : '\n');
}
}