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 "Memory_lib.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
int encode(int type, int top, int pos, int off)
{
int ret=0;
ret|=type;
ret<<=7; ret|=top;
ret<<=7; ret|=pos;
ret<<=6; ret|=off;
return ret;
}
int Memory(int N, int M)
{
if(N%2) return -2;
if(M==0) return encode(0, 0, 1, 0);
int type, top, pos, off;
off=M&((1<<6)-1); M>>=6;
pos=M&((1<<7)-1); M>>=7;
top=M&((1<<7)-1); M>>=7;
//printf("%d %d %d %d\n", type, top, pos, off);
type=M;
if(!(top<pos)) return -2;
if(!(1<=pos && pos<=N+1)) return -2;
if(!(0<=top && top<=N)) return -2;
if(!(off<=N/2)) return -2;
if(type==0)
{
if(off!=0) return -2;
if(pos==N+1)
{
if(top==0) return -1;
return -2;
}
if(!(1<=pos && pos<=N)) return -2;
char c=Get(pos);
if(c=='>') return encode(1, top, pos, 0);
if(c==']') return encode(2, top, pos, 0);
if(c=='<') return encode(0, pos, pos+1, 0);
if(c=='[') return encode(0, pos, pos+1, 0);
}
else if(type==1)
{
if(top==0) return -2;
if(!(1<=top && top<=N)) return -2;
char c=Get(top);
if(c!='<') return -2;
return encode(3, top-1, pos+1, 0);
}
else if(type==2)
{
if(top==0) return -2;
if(!(1<=top && top<=N)) return -2;
char c=Get(top);
if(c!='[') return -2;
return encode(3, top-1, pos+1, 0);
}
else
{
char c;
if(top==0) c='<';
else if(top<=N) c=Get(top);
else return -2;
if(c==']' || c=='>') off++;
else off--;
if(top==0 && off>=0) return -2;
if(off<0) return encode(0, top, pos, 0);
return encode(3, top-1, pos, off);
}
}
Compilation message (stderr)
memory.cpp: In function 'int Memory(int, int)':
memory.cpp:81:1: warning: control reaches end of non-void function [-Wreturn-type]
81 | }
| ^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |