結果
問題 |
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'); } }