Submission #52622

# Submission time Handle Problem Language Result Execution time Memory
52622 2018-06-26T09:46:57 Z someone_aa cmp (balkan11_cmp) C++17
100 / 100
7064 ms 96088 KB
#include "cmp.h"
#include <vector>
using namespace std;
void remember(int n) {
    int node = 0;
    int li=0, ri=4095;
    //cout<<0<<" ";
    while(li < ri) {
        int sz = ri - li + 1;
        sz = sz / 4;
        int st[4], fh[4];
        for(int i=0;i<4;i++) {
            st[i] = li + i*sz;
            fh[i] = st[i] + sz - 1;
            if(st[i] <= n && n <= fh[i]) {
                node = node * 4 + (i+1);
                li = st[i]; ri = fh[i];
            }
        }
        bit_set(node);
        //cout<<node<<" ";
    } //cout<<"\n";
}

int compare(int b) {
    int li=0, ri=4095;
    int node = 0;
    vector<int>v;
    v.push_back(0);
    while(li < ri) {
        int sz = ri - li + 1;
        sz = sz / 4;
        int st[4], fh[4];
        int index = 0;
        for(int i=0;i<4;i++) {
            st[i] = li + i*sz;
            fh[i] = st[i] + sz - 1;
            if(st[i] <= b && b <= fh[i]) {
                index = i + 1;
            }
        }
        node = node * 4 + index;
        li = li + (index-1)*sz;
        ri = li + sz - 1;
        v.push_back(node);
    }

    li = 0, ri = v.size() - 1;
    int f = 0;
    while(li <= ri) {
        int mid = (li+ri)/2;

        bool check = false;
        if(v[mid] == 0) check = false;
        else check = bit_get(v[mid]);
        if(check) {
            f = mid;
            li = mid + 1;
        }
        else ri = mid - 1;
    }
    if(f == v.size()-1) return 0;
    else {
        int myind;
        if(v[f]*4+1 == v[f+1]) myind = 1;
        else if(v[f]*4+2 == v[f+1]) myind = 2;
        else if(v[f]*4+3 == v[f+1]) myind = 3;
        else if(v[f]*4+4 == v[f+1]) myind = 4;
        if(myind == 1) return -1;
        else if(myind == 2) {
            if(bit_get(v[f]*4+1)) return 1;
            else return -1;
        }
        else if(myind == 3) {
            if(bit_get(v[f]*4+4)) return -1;
            else return 1;
        }
        else if(myind == 4) return 1;
    }
    return 0;
}

Compilation message

cmp.cpp: In function 'int compare(int)':
cmp.cpp:62:10: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(f == v.size()-1) return 0;
        ~~^~~~~~~~~~~~~
cmp.cpp:69:9: warning: 'myind' may be used uninitialized in this function [-Wmaybe-uninitialized]
         if(myind == 1) return -1;
         ^~
# Verdict Execution time Memory Grader output
1 Correct 7064 ms 96088 KB Output is correct - maxAccess = 10, score = 100