제출 #207623

#제출 시각아이디문제언어결과실행 시간메모리
207623autumn_eelBroken Device (JOI17_broken_device)C++14
100 / 100
1478 ms3568 KiB
#include "Annalib.h" #include <bits/stdc++.h> #define rep(i,n)for(int i=0;i<(n);i++) using namespace std; typedef long long ll; bool b[160],d[160]; bool used[160]; void Anna(int N,ll X,int K,int P[]){ static mt19937 mt(314159); uniform_int_distribution<>dist(0,N-1); memset(b,0,sizeof(b)); memset(d,0,sizeof(d)); memset(used,0,sizeof(used)); rep(i,K){ b[P[i]]=1; } rep(loop,N/2){ int i,j; do{ i=dist(mt); j=dist(mt); }while(i==j||used[i]||used[j]); used[i]=used[j]=true; int e=X%3; if((e==0&&!b[j])||(e==1&&!b[i])||(e==2&&!b[i]&&!b[j])){ if(e==0)d[i]=0,d[j]=1; if(e==1)d[i]=1,d[j]=0; if(e==2)d[i]=1,d[j]=1; X/=3; } } rep(i,N)Set(i,d[i]); }
#include "Brunolib.h" #include <bits/stdc++.h> #define rep(i,n)for(int i=0;i<(n);i++) using namespace std; typedef long long ll; ll Bruno(int N,int A[]){ static mt19937 mt(314159); uniform_int_distribution<>dist(0,N-1); bool used[160]{}; ll ans=0,x=1; rep(loop,N/2){ int i,j; do{ i=dist(mt); j=dist(mt); }while(i==j||used[i]||used[j]); used[i]=used[j]=true; if(A[i]||A[j]){ ans+=(A[i]*2+A[j]-1)*x; x*=3; } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...