# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1262015 | user736482 | Broken Device (JOI17_broken_device) | C++20 | 0 ms | 0 KiB |
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define MOD 1000000007
#define INF 1000000019
#define POT (1<<20)
#define INFL 1000000000000000099
void Anna( int n, long long x, int k, int p[] ){
vector<ll>v;
ll cur=0;
bool bl[150];
for(ll i=0;i<38;i++){
v.pb(x%3);
x/=3;
}
reverse(v.begin(),v.end());
for(ll i=0;i<150;i++)bl[i]=0;
for(ll i=0;i<k;i++)bl[p[i]]=1;
for(ll i=0;i<38;i++){
if((bl[cur] && v[i]!=0) || (bl[cur+1] && v[i]!=1)){
Set(cur,0);
Set(cur+1,0);
cur+=2;
i--;
}
else{
// cout<<"xd"<<flush;
if(v[i]==0){
Set(cur,0);
Set(cur+1,1);
}
if(v[i]==1){
Set(cur,1);
Set(cur+1,0);
}
if(v[i]==2){
Set(cur,1);
Set(cur+1,1);
}
cur+=2;
}
}
for(ll i=cur;i<150;i++)Set(i,0);
}
long long Bruno( int n, int a[] ){
ll ans=0;
ll ak=0;
for(ll i=0;i<38;i++){
if(a[ak]==0 && a[ak+1]==0){
i--;
ak+2;
}
else{
if(a[ak]==0)ans=ans*3+0;
else if(a[ak+1]==0)ans=ans*2+1;
else ans=ans*3+2;
ak+=2;
}
}
return ans;
}
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define MOD 1000000007
#define INF 1000000019
#define POT (1<<20)
#define INFL 1000000000000000099
void Anna( int n, long long x, int k, int p[] ){
vector<ll>v;
ll cur=0;
bool bl[150];
for(ll i=0;i<38;i++){
v.pb(x%3);
x/=3;
}
reverse(v.begin(),v.end());
for(ll i=0;i<150;i++)bl[i]=0;
for(ll i=0;i<k;i++)bl[p[i]]=1;
for(ll i=0;i<38;i++){
if((bl[cur] && v[i]!=0) || (bl[cur+1] && v[i]!=1)){
Set(cur,0);
Set(cur+1,0);
cur+=2;
i--;
}
else{
// cout<<"xd"<<flush;
if(v[i]==0){
Set(cur,0);
Set(cur+1,1);
}
if(v[i]==1){
Set(cur,1);
Set(cur+1,0);
}
if(v[i]==2){
Set(cur,1);
Set(cur+1,1);
}
cur+=2;
}
}
for(ll i=cur;i<150;i++)Set(i,0);
}
long long Bruno( int n, int a[] ){
ll ans=0;
ll ak=0;
for(ll i=0;i<38;i++){
if(a[ak]==0 && a[ak+1]==0){
i--;
ak+2;
}
else{
if(a[ak]==0)ans=ans*3+0;
else if(a[ak+1]==0)ans=ans*2+1;
else ans=ans*3+2;
ak+=2;
}
}
return ans;
}