Submission #132464

#TimeUsernameProblemLanguageResultExecution timeMemory
132464mohammedehab2002Broken Device (JOI17_broken_device)C++11
0 / 100
229 ms3560 KiB
#include "Annalib.h" #include <bits/stdc++.h> using namespace std; int ans[155],pos[128]; bitset<129> mat[128],bas[128]; void add(int r) { for (int i=0;i<128;i++) { if (mat[r][i]) mat[r]^=bas[i]; } for (int i=0;i<128;i++) { if (mat[r][i]) { bas[i]=mat[r]; pos[r]=i; return; } } } void Anna(int n,long long x,int k,int p[]) { for (int i=0;i<128;i++) mat[i].reset(); mat[0][0]=1; for (int i=1;i<8;i++) { int len=(1<<(i-1)); for (int j=0;j<len;j++) { for (int l=0;l<len;l++) { mat[j+len][l]=mat[j][l]; mat[j][l+len]=mat[j][l]; } } } mt19937 rng(12742127); shuffle(mat,mat+128,rng); for (int i=0;i<128;i++) { bas[i].reset(); for (int j=0;j<k;j++) mat[i][p[j]]=0; } memset(pos,-1,sizeof(pos)); memset(ans,-1,sizeof(ans)); for (int i=0;i<128;i++) { if (i<60) { bool b=(x&(1LL<<i)); mat[i][128]=b; } else mat[i][128]=0; add(i); } for (int i=127;i>=0;i--) { if (pos[i]==-1) continue; for (int j=0;j<i;j++) { if (mat[j][pos[i]]) mat[j]^=mat[i]; } } for (int i=0;i<128;i++) { if (pos[i]!=-1) ans[pos[i]]=mat[i][128]; } for (int i=0;i<n;i++) { if (ans[i]==-1) ans[i]=0; Set(i,ans[i]); } }
#include "Brunolib.h" #include <bits/stdc++.h> using namespace std; bitset<128> hmat[128]; long long Bruno(int n,int a[]) { hmat[0][0]=1; for (int i=1;i<8;i++) { int len=(1<<(i-1)); for (int j=0;j<len;j++) { for (int l=0;l<len;l++) { hmat[j+len][l]=hmat[j][l]; hmat[j][l+len]=hmat[j][l]; } } } mt19937 rng(12742127); shuffle(hmat,hmat+128,rng); long long x=0; for (int i=0;i<60;i++) { long long cur=0; for (int j=0;j<n;j++) { if (hmat[i][j]) cur^=a[j]; } x|=(cur<<i); } return x; }
#Verdict Execution timeMemoryGrader output
Fetching results...