Submission #1205303

#TimeUsernameProblemLanguageResultExecution timeMemory
1205303MuhammadSaramBroken Device (JOI17_broken_device)C++20
0 / 100
19 ms1344 KiB
#include "Annalib.h" #include <bits/stdc++.h> using namespace std; void Anna(int n, long long x, int k, int P[]) { bool off[n]={}; for (int i=0;i<k;i++) off[P[i]]=1; int p=60;x<<=1; for (int i=0;i<n;i+=3) { int cnt=(off[i]+off[i+1]+off[i+2]),ass; if (cnt>=2 or !p) Set(i,0),Set(i+1,0),Set(i+2,0); else if(cnt==1) { int val=(x>>p)%2;p--; val=val*2+(x>>p)%2,p--; if (off[i]) { if (val==1) ass=3; else if(val>=2) ass=2,p++; else ass=1,p++; } else if(off[i+1]) { if (val==2) ass=4; else if(val==3) ass=5; else ass=1,p++; } else { if (val==2) ass=4; else if(val==3) ass=2,p++; else ass=6,p++; } Set(i,ass/4),Set(i+1,ass%4/2),Set(i+2,ass%2); } else { int val=(x>>p)%2;p--; if (p>=0) val=val*2+(x>>p)%2,p--; if (val==0) ass=7; else if(val==1) ass=3; else if(val==2) ass=4; else ass=5; Set(i,ass/4),Set(i+1,ass%4/2),Set(i+2,ass%2); } } }
#include "Brunolib.h" #include <bits/stdc++.h> using namespace std; long long Bruno(int n, int a[]) { long long ans=0; int cnt=0; vector<pair<int,int>> v={{1,0},{2,0},{2,1},{4,1},{4,2},{4,3},{2,0},{4,0}}; for (int i=0;i<n;i+=3) { int val=a[i]*4+a[i+1]*2+a[i+2]; ans=ans*v[val].first+v[val].second; cnt+=31-__builtin_clz(v[val].first); } if (cnt>60) ans>>=2; return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...