# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
598702 | mosiashvililuka | Ancient Machine (JOI21_ancient_machine) | C++17 | 74 ms | 14332 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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=18,J=13,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=18,J=13,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);
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |