# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
22365 | AcornCkiGs14004Team (#40) | Window Xor (KRIII5_WX) | C++11 | 359 ms | 2800 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>
#include <math.h>
#include <assert.h>
#include <queue>
#include <map>
#include <set>
#include <string>
#include <algorithm>
#include <iostream>
#include <functional>
using namespace std;
typedef long long ll;
typedef pair<int, int> Pi;
#define Fi first
#define Se second
#define pb(x) push_back(x)
#define sz(x) (int)x.size()
#define rep(i, n) for(int i=0;i<n;i++)
#define all(x) x.begin(), x.end()
int N, K;
int Y[100010];
int Z[100010];
int gc(int x, int y){return y == 0 ? x : gc(y, x % y); }
void Do(int x){
int g = gc(x, N);
for(int q=0;q<g;q++){
int tk = K % (2 * N / g);
int C = 0;
for(int i=0;i<tk;i++){
int t = (ll)(q + i * x) % N;
C ^= Y[t];
}
Z[q] = C;
for(int i=(x+q)%N;i!=q;i=(i+x)%N){
Z[i] = Z[(i+N-x)%N];
Z[i] ^= Y[(i+N-x)%N];
Z[i] ^= Y[(i+N-x+(ll)tk*x) % N];
}
}
rep(i, N)Y[i] = Z[i], Z[i] = 0;
}
void solve(int tc){
scanf("%d%d", &N, &K);
ll T; scanf("%lld", &T);
for(int i=0;i<N;i++)scanf("%d", Y+i);
int tmp = 1;
while(T){
if(T & 1){
Do(tmp);
}
tmp = (tmp + tmp) % N;
T >>= 1;
}
for(int i=0;i<N;i++)printf("%d ", Y[i]); puts("");
}
int main(){
int Tc = 1; //scanf("%d", &Tc);
for(int tc=1; tc<=Tc; tc++){
solve(tc);
}
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |