CSES - Leirikisa 2 - Results
Submission details
Task:Flash memory
Sender:DualRed
Submission time:2023-04-18 14:42:44 +0300
Language:C++ (C++20)
Status:READY
Result:31
Feedback
groupverdictscore
#1ACCEPTED30.7
Test results
testverdicttimescore
#1ACCEPTED0.36 s2.4details
#2ACCEPTED0.21 s1.6details
#3ACCEPTED0.20 s2.4details
#4ACCEPTED0.12 s1.25details
#5ACCEPTED0.12 s1.5details
#6ACCEPTED0.12 s2.45details
#7ACCEPTED0.07 s1.05details
#8ACCEPTED0.07 s1.15details
#9ACCEPTED0.07 s1.4details
#10ACCEPTED0.07 s2.45details
#11ACCEPTED0.05 s0.85details
#12ACCEPTED0.05 s0.95details
#13ACCEPTED0.05 s1.05details
#14ACCEPTED0.05 s1.4details
#15ACCEPTED0.04 s2.45details
#16ACCEPTED0.03 s0.75details
#17ACCEPTED0.03 s0.85details
#18ACCEPTED0.03 s1details
#19ACCEPTED0.03 s1.3details
#20ACCEPTED0.03 s2.45details

Code

#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;

int B, M;
int logB;

void reading(){
    string state; cin >> state;
    for(int s = B-M; s >= 0; s -= M){
        bool b = false;
        for(int i = 0; i < M; i++){
            if(state[s+i] == '1') b = true;
        }
        if(b){
            cout << state.substr(s, M) << endl;
            break;
        }
    }

    /*string state; cin >> state;
    int index = 0;
    for(int i = logB-1; i >= 0; i--){
        if(state[i] == '1') index += pow(2, logB-i-1);
    }
    string result = state.substr(index, M);
    cout << result << endl;*/
}

void writing(){
    string state, value;
    cin >> state >> value;

    bool b = false;
    for(int i = 0; i < M; i++){
        if(value[i] == '1') b = true;
    }
    if(!b){
        cout << "0" << endl;
        return;
    }

    bool found = false;
    for(int s = 0; s < B; s += M){
        bool b = false;
        for(int i = 0; i < M; i++){
            if(state[s+i] == '1') b = true;
        }
        if(!b){
            for(int i = 0; i < M; i++){
                if(value[i] == '1') state[s+i] = '1';
                else state[s+i] = '0';
            }
            found = true;
            break;
        }
    }

    if(!found) cout << "0" << endl;
    else{
        cout << "1" << endl;
        cout << state << endl;
    }


    /*bool found = false;
    string result;
    for(int i = 0; i <= B-M; i++){
        string test = state;
        bool correct = true;
        for(int k = logB-1; k >= 0; k--){
            if(!(i & (1 << k)) && test[logB-k-1] == '1'){
                correct = false;
                break;
            }
            else if(i & (1 << k)) test[logB-k-1] = '1';
            else test[logB-k-1] = '0';
        }
        if(!correct) continue;
        for(int p = 0; p < M; p++){
            if(i+p < logB && test[i+p] != value[p]){
                correct = false;
                break;
            }
            else if(test[i+p] == '1' && value[p] == '0'){
                correct = false;
                break;
            }
            else test[i+p] = value[p];
        }

        if(correct){
            found = true;
            result = test;
            break;
        }
    }

    if(!found) cout << 0 << endl;
    else{
        cout << 1 << endl;
        cout << result << endl;
    }*/
}

/*
0
16 8
1
0000000000000000 11001011

0
-------
1
16 8
1
0011100101100000

0



*/


int main(){
    cin.tie(0)->sync_with_stdio(0);
    
    int T; cin >> T;
    cin >> B >> M;
    logB = log2(B);
    if(T == 0){
        int C; 
        while(true){
            cin >> C;
            if(C == 0) break;
            writing();
        }
    }
    else if(T == 1){
        int C; 
        while(true){
            cin >> C;
            if(C == 0) break;
            reading();
        }
    }
    else assert(false);
    return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
16 8 4.062445024495069624056

correct output
(empty)

user output
Activating encoder mode
0
16 8
1
0000000000000000 01110001
...
Truncated

Error:
1 1 48 0

Test 2

Verdict: ACCEPTED

input
32 8 12.264904841300964834177

correct output
(empty)

user output
Activating encoder mode
0
32 8
1
000000000000000000000000000000...
Truncated

Error:
1 1 32 0

Test 3

Verdict: ACCEPTED

input
32 16 4.129591513707784802006

correct output
(empty)

user output
Activating encoder mode
0
32 16
1
000000000000000000000000000000...
Truncated

Error:
1 1 48 0

Test 4

Verdict: ACCEPTED

input
64 8 30.039277894268828900030

correct output
(empty)

user output
Activating encoder mode
0
64 8
1
000000000000000000000000000000...
Truncated

Error:
1 1 25 0

Test 5

Verdict: ACCEPTED

input
64 16 12.953148094217360432715

correct output
(empty)

user output
Activating encoder mode
0
64 16
1
000000000000000000000000000000...
Truncated

Error:
1 1 30 0

Test 6

Verdict: ACCEPTED

input
64 32 4.073559788233661501537

correct output
(empty)

user output
Activating encoder mode
0
64 32
1
000000000000000000000000000000...
Truncated

Error:
1 1 49 0

Test 7

Verdict: ACCEPTED

input
128 8 69.777892228928747548775

correct output
(empty)

user output
Activating encoder mode
0
128 8
1
000000000000000000000000000000...
Truncated

Error:
1 1 21 0

Test 8

Verdict: ACCEPTED

input
128 16 34.73179127514363524097...

correct output
(empty)

user output
Activating encoder mode
0
128 16
1
000000000000000000000000000000...
Truncated

Error:
1 1 23 0

Test 9

Verdict: ACCEPTED

input
128 32 13.95078898770563890866...

correct output
(empty)

user output
Activating encoder mode
0
128 32
1
000000000000000000000000000000...
Truncated

Error:
1 1 28 0

Test 10

Verdict: ACCEPTED

input
128 64 4.039918210604800133907

correct output
(empty)

user output
Activating encoder mode
0
128 64
1
000000000000000000000000000000...
Truncated

Error:
1 1 49 0

Test 11

Verdict: ACCEPTED

input
256 8 174.46804708607103851145...

correct output
(empty)

user output
Activating encoder mode
0
256 8
1
000000000000000000000000000000...
Truncated

Error:
1 1 17 0

Test 12

Verdict: ACCEPTED

input
256 16 82.22261415140417733455...

correct output
(empty)

user output
Activating encoder mode
0
256 16
1
000000000000000000000000000000...
Truncated

Error:
1 1 19 0

Test 13

Verdict: ACCEPTED

input
256 32 37.62938226976920648891...

correct output
(empty)

user output
Activating encoder mode
0
256 32
1
000000000000000000000000000000...
Truncated

Error:
1 1 21 0

Test 14

Verdict: ACCEPTED

input
256 64 14.26346228205414057768...

correct output
(empty)

user output
Activating encoder mode
0
256 64
1
000000000000000000000000000000...
Truncated

Error:
1 1 28 0

Test 15

Verdict: ACCEPTED

input
256 128 4.01556909389394343085...

correct output
(empty)

user output
Activating encoder mode
0
256 128
1
000000000000000000000000000000...
Truncated

Error:
1 1 49 0

Test 16

Verdict: ACCEPTED

input
512 16 204.7462421274103461702...

correct output
(empty)

user output
Activating encoder mode
0
512 16
1
000000000000000000000000000000...
Truncated

Error:
1 1 15 0

Test 17

Verdict: ACCEPTED

input
512 32 91.77859514807311153984...

correct output
(empty)

user output
Activating encoder mode
0
512 32
1
000000000000000000000000000000...
Truncated

Error:
1 1 17 0

Test 18

Verdict: ACCEPTED

input
512 64 39.23027924214593871262...

correct output
(empty)

user output
Activating encoder mode
0
512 64
1
000000000000000000000000000000...
Truncated

Error:
1 1 20 0

Test 19

Verdict: ACCEPTED

input
512 128 15.0000000021676722686...

correct output
(empty)

user output
Activating encoder mode
0
512 128
1
000000000000000000000000000000...
Truncated

Error:
1 1 26 0

Test 20

Verdict: ACCEPTED

input
512 256 4.00542327711105546887...

correct output
(empty)

user output
Activating encoder mode
0
512 256
1
000000000000000000000000000000...
Truncated

Error:
1 1 49 0