# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
22267 | 크리콘 B번 문제는 그리디로 풀려요 (#40) | Window Xor (KRIII5_WX) | C++98 | 386 ms | 3484 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<memory.h>
typedef long long lld;
int N, K;
lld T, ba[101010], im[101010], chk[101010];
lld gcd(lld a, lld b){ return b?gcd(b,a%b):a; }
void trans(int ji){
lld per = (1ll<<ji) % N, K2 = K;
lld tmp = N / gcd(N, per); K2 %= 2*tmp;
memset(chk, 0, sizeof(chk));
int cnt=0;
for(lld i=0; i<N; i++){
if(chk[i])continue;
lld xo=0;
for(lld j=0; j<K2; j++)xo ^= ba[(i+j*per) % N];
for(lld j=0; j<tmp; j++){
im[(i+j*per) % N] = xo, chk[(i+j*per) % N] = 1;
xo ^= ba[(i+j*per) % N];
xo ^= ba[(i+(j+K2)*per) % N];
}
}
memcpy(ba, im, sizeof(ba));
}
int main(){
scanf("%d%d%lld", &N, &K, &T);
for(int i=0; i<N; i++)scanf("%lld", &ba[i]);
for(int i=0; i<63; i++){
if((1ll<<i) & T) trans(i);
}
for(int i=0; i<N; i++)printf("%lld ", ba[i]);
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |