# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
548448 | MilosMilutinovic | Snake Escaping (JOI18_snake_escaping) | C++14 | 936 ms | 19168 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>
using namespace std;
#define pb push_back
const int N=(1<<20)+5;
const int M=1600050;
const int Q=1000050;
int l,n,q,lst[M],pw[20],ans[Q],dp[M],msk[N],qmask[Q],omask[Q],qv[Q];
char s[N],qs[25];
void calc(){
pw[0]=1;
for(int i=1;i<14;i++)pw[i]=pw[i-1]*3;
for(int i=0;i<M;i++){
vector<int> bits;
int x=i;
while(x>0)bits.push_back(x%3),x/=3;
lst[i]=-1;
for(int j=0;j<bits.size();j++)if(bits[j]==2)lst[i]=j;
}
}
void BruteForce(){
memset(dp,0,sizeof *dp);
for(int i=0;i<n;i++){
int sum=0,x=i,b=0;
while(x>0)sum+=(x%2)*pw[b++],x/=2;
dp[sum]+=(int)(s[i]-'0');
}
for(int i=0;i<M;i++)if(lst[i]!=-1){
dp[i]+=dp[i-2*pw[lst[i]]];
dp[i]+=dp[i-pw[lst[i]]];
Compilation message (stderr)
# | 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... |