# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
598700 | mosiashvililuka | Ancient Machine (JOI21_ancient_machine) | C++17 | 83 ms | 14720 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
#include "Anna.h"
using namespace std;
void Anna(int NN, std::vector<char> SS) {
long long a,b,c,d,e,i,j,ii,jj,zx,xc,I,LI=19,J=14,JJ=20;
vector <long long> f(100009),dp(600009),g(100009);
a=NN;
for(i=1; i<=a; i++){
if(SS[i-1]=='X') f[i]=0;
if(SS[i-1]=='Y') f[i]=1;
if(SS[i-1]=='Z') f[i]=2;
}
//
zx=0;
for(i=0; i<(1<<LI); i++){
e=0;
for(j=1; j<LI; j++){
jj=j-1;
if((i&(1<<jj))!=0&&(i&(1<<j))!=0){
e=1;
break;
}
}
if(e==1) continue;
zx++;dp[i]=zx;
}
//cout<<zx<<"\n";
for(i=1; i<=a; i++){
if(f[i]==0){
break;
}
}
I=i;
if(I>a) I=0;
//if(I==0) Send(0); else Send(1);
/*for(j=0; j<JJ; j++){
if((I&(1<<j))!=0) Send(1); else Send(0);
}*/
//g[I]=1;
c=I;
for(j=0; j<JJ; j++){
if((I&(1<<j))!=0) Send(1); else Send(0);
}
for(i=I+1; i<=a; i++){
if(f[i]==2){
/*if(c<i-1) g[i]=1;
c=i;*/
if(f[i+1]!=2) g[i]=1;
}
}
/*for(i=1; i<=a; i++) cout<<g[i]<<" ";
cout<<"gend\n";*/
for(i=1; i<=a; i+=LI){
zx=0;
for(j=i; j<=min(i+LI-1,a); j++){
if(g[j]==1) zx^=(1<<(j-i));
}
c=dp[zx];
for(j=0; j<J; j++){
if((c&(1<<j))!=0) Send(1); else Send(0);
}
}
}
#include<bits/stdc++.h>
#include "Bruno.h"
using namespace std;
namespace {
void rem(int q){
Remove(q-1);
}
}
void Bruno(int NN, int LL, std::vector<int> AA) {
int a,b,c,d,e,i,j,ii,jj,zx,xc,L,I,LI=19,J=14,JJ=20;
vector <int> f(100009),Adp(100009);
a=NN;L=LL;
/*for(i=1; i<=a; i++){
f[i]=AA[i-1];
}*/
I=0;
for(j=0; j<JJ; j++){
if(AA[j]==1) I+=(1<<j);
}
if(I==0){
for(i=1; i<=a; i++) rem(i);
return;
}
for(j=JJ; j<L; j++){
AA[j-(JJ-1)]=AA[j];
}
L-=(JJ-1);
zx=0;
for(i=0; i<(1<<LI); i++){
e=0;
for(j=1; j<LI; j++){
jj=j-1;
if((i&(1<<jj))!=0&&(i&(1<<j))!=0){
e=1;
break;
}
}
if(e==1) continue;
zx++;//dp[i]=zx;
Adp[zx]=i;
}
/*for(i=1; i<L; i++) cout<<AA[i]<<" ";
cout<<"\n";*/
int id=1;
for(i=1; i<L; i+=J){
zx=0;
for(j=i; j<=min(i+J-1,L-1); j++){
if(AA[j]==1){
zx+=(1<<(j-i));
}
}
c=Adp[zx];
for(j=id; j<=min(id+LI-1,a); j++){
d=j-id;
f[j]=(c&(1<<d));
if(f[j]!=0) f[j]=1;
}
id+=LI;
}
/*for(i=1; i<=a; i++) cout<<f[i]<<" ";
cout<<"\n";*/
f[I]=1;
//solve
for(i=1; i<=a; i++){
if(f[i]==1){
break;
}
rem(i);
}
if(i>a) return;
I=i;ii=i;
for(i=I+1; i<=a; i++){
if(f[i]==1){
for(j=i-1; j>ii; j--) rem(j);
rem(i);
ii=i;
continue;
}
}
for(i=a; i>ii; i--) rem(i);
rem(I);
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |