Submission #199204

#TimeUsernameProblemLanguageResultExecution timeMemory
199204arnold518기억 압축 (JOI15_memory)C++14
40 / 100
2853 ms284152 KiB
#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 Memory(int N, int M) { int i, j; if(N>30) { int pos=M/1000, val=M%1000; if(pos>N) return -2; if(pos==N) { if(val==0) return -1; return -2; } assert(pos+1<=N); char t=Get(pos+1); if(t=='<') val++; else val--; pos++; if(val<0) return -2; return val+pos*1000; } //printf("%d\n", M); if(N%2) return -2; if(M==0) return 33; int pos=(M&31), mask=M>>5, sz; if(mask==0) return -2; if(pos==0) return -2; for(i=16; i>=0; i--) if(mask&(1<<i)) { sz=i; break; } if(sz>N/2) return -2; if(pos==N+1) { if(sz==0 && mask==1) return -1; return -2; } if(pos>N) return -2; char t=Get(pos); //printf("%d -> %d %d %d %c\n", M, pos, mask, sz, t); if(t=='<') { mask<<=1; sz++; if(sz>N/2) return -2; } else if(t=='[') { mask<<=1; sz++; mask|=1; if(sz>N/2) return -2; } else if(t=='>') { if(sz==0) return -2; if((mask&1)==1) return -2; sz--; mask>>=1; } else if(t==']') { if(sz==0) return -2; if((mask&1)==0) return -2; sz--; mask>>=1; } pos++; return (mask<<5)|pos; }

Compilation message (stderr)

memory.cpp: In function 'int Memory(int, int)':
memory.cpp:11:9: warning: unused variable 'j' [-Wunused-variable]
  int i, j;
         ^
memory.cpp:77:3: warning: 'sz' may be used uninitialized in this function [-Wmaybe-uninitialized]
   if(sz==0) return -2;
   ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...