#include "Memory_lib.h"
#include <bits/stdc++.h>
using namespace std;
int pw[25];
int val(int s, int e, int M) {
int val = 0, cnt = 1;
for(int i=s;i<e;i++) {
val += (M & pw[i])/pw[i] * cnt;
cnt *= 2;
}
return val;
}
/*string s;
char Get(int v) {
cout << v << ' ';
assert(1<=v&&v<=s.length());
return s[v-1];
}*/
int Memory(int N, int M) {
int i;
pw[0] = 1;
for(i=1;i<=23;i++) pw[i] = pw[i-1] * 2;
int st = val(0, 7, M);
int pt = val(7, 14, M);
int cnt = val(14, 21, M);
int k = val(21, 22, M);
//cout << st << ' ' << pt << ' ' << cnt << ' ' << k << '\n';
if(st==pt) {
//assert(1<=st+1&&st+1<=N);
char c = Get(st+1);
if(c=='<' || c=='[') {
if(st+1>=N) return -2;
int v = st + pw[7] * (st+1) + pw[14] * 1 + pw[21] * (c=='<'?1:0);
return v;
}
else {
if(st-1<0) return -2;
int v = st + pw[7] * (st - 1) + pw[14] * 1 + pw[21] * (c=='>'?1:0);
return v;
}
}
char c = Get(pt+1);
assert(1<=pt+1);
if(c=='<'||c=='[') {
if(st < pt) {
if(pt+1>=N) return -2;
int v = st + pw[7] * (pt + 1) + pw[14] * (cnt + 1) + pw[21] * k;
return v;
}
else { // pt < st case
if(cnt==1) {
int k2 = (c=='<'?1:0);
if(k==k2) {
if(st+1>=N) return -1;
int v = st+1 + pw[7] * (st+1) + pw[14] * 0 + pw[21] * 0;
return v;
}
else return -2;
}
else {
if(pt-1<0) return -2;
int v = st + pw[7] * (pt - 1) + pw[14] * (cnt - 1) + pw[21] *k;
return v;
}
}
}
else { // c == '>' || c == ']'
if(st<pt) {
if(cnt==1) {
int k2 = (c=='>'?1:0);
if(k==k2) {
if(st+1>=N) return -1;
int v = st+1 + pw[7] * (st+1) + pw[14] * 0 + pw[21] * 0;
return v;
}
else return -2;
}
else {
if(pt+1>=N) return -2;
int v = st + pw[7] * (pt+1) + pw[14] * (cnt-1) + pw[21] * k;
return v;
}
}
else { // pt < st
if(pt-1<0) return -2;
int v = st + pw[7] * (pt-1) + pw[14] * (cnt+1) + pw[21] * k;
return v;
}
}
}
/*
signed main() {
cin >> s;
int cnt = 15000;
int M = 0;
while(cnt--) {
M = Memory(s.length(), M);
cout << M << '\n';
if(M==-1) cout << "Right\n";
else if(M==-2) cout << "Wrong\n";
if(M==-1||M==-2) break;
}
}
*/
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
212 KB |
Wrong Answer [3] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
212 KB |
Wrong Answer [3] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
212 KB |
Wrong Answer [3] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
212 KB |
Wrong Answer [3] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
212 KB |
Wrong Answer [1] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
212 KB |
Wrong Answer [3] |
2 |
Halted |
0 ms |
0 KB |
- |