답안 #1103264

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1103264 2024-10-20T15:59:40 Z Ahmed57 메시지 (IOI24_message) C++17
10 / 100
1243 ms 1096 KB
#include <bits/stdc++.h>
using namespace std;
vector<vector<bool>> X;
vector<bool> send_packet(vector<bool> A);

void send_message(std::vector<bool> M, std::vector<bool> C){
    vector<vector<bool>> v;
    for(int i = 0;i<64;i++){
        v.push_back(vector<bool>(31,0));
    }
    for(int i = 0;i<31;i++){
        int la = -1;
        for(int j = 1;j<31;j++){
            if(C[i]==C[(i+j)%31]){
                la = j;
                break;
            }
        }
        for(int j = 0;j<la-1;j++){
            v[j][i] = 0;
        }
        v[la-1][i] = 1;
    }
    int it = 0;
    for(int i = 0;i<31;i++){
        if(C[i])continue;
        int j = 0;
        while(v[j][i]==0){
            j++;
        }
        j++;
        for(;j<64;j++){
            if(it==M.size()){
                v[j][i] = !M.back();
            }else{
                v[j][i] = M[it++];
            }
        }
    }
    for(int i = 0;i<64;i++){
        send_packet(v[i]);
    }
}
std::vector<bool> receive_message(std::vector<std::vector<bool>> R){
    int nxt[31];
    for(int i = 0;i<31;i++){
        int j = 0;
        while(j<64&&R[j][i]==0)j++;
        j++;
        if(j<31){
            nxt[i] = (i+j)%31;
        }else{
            nxt[i] = -1;
        }
    }
    vector<int> ans;
    for(int i = 0;i<31;i++){
        int x = i;
        vector<int> v = {i};
        int sz = 1;
        while(nxt[x]!=i&&sz<40){
            if(nxt[x]==-1){
                sz = 40;
                continue;
            }
            x = nxt[x];
            v.push_back(x);
            sz++;
        }
        if(sz==16){
            ans = v;
        }
    }
    sort(ans.begin(),ans.end());
    vector<bool> M;
    for(auto i:ans){
        int j = 0;
        while(R[j][i]==0)j++;
        j++;
        for(;j<64;j++){
            M.push_back(R[j][i]);
        }
    }
    bool v = M.back();
    while(M.back()==v)M.pop_back();
    return M;
}
// signed main(){
//     send_message({1,0,0,1,1},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1});
//     for(auto i:receive_message(X)){
//         cout<<i<<endl;
//     }
// }

Compilation message

message.cpp: In function 'void send_message(std::vector<bool>, std::vector<bool>)':
message.cpp:33:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<bool>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |             if(it==M.size()){
      |                ~~^~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 656 KB Used 64 days
# 결과 실행 시간 메모리 Grader output
1 Correct 1216 ms 852 KB Used 64 days
2 Correct 1138 ms 836 KB Used 64 days
3 Correct 1190 ms 1096 KB Used 64 days
4 Correct 1243 ms 836 KB Used 64 days
5 Correct 858 ms 844 KB Used 64 days
6 Correct 609 ms 840 KB Used 64 days
7 Correct 734 ms 840 KB Used 64 days
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 656 KB Used 64 days
2 Correct 1216 ms 852 KB Used 64 days
3 Correct 1138 ms 836 KB Used 64 days
4 Correct 1190 ms 1096 KB Used 64 days
5 Correct 1243 ms 836 KB Used 64 days
6 Correct 858 ms 844 KB Used 64 days
7 Correct 609 ms 840 KB Used 64 days
8 Correct 734 ms 840 KB Used 64 days
9 Incorrect 1127 ms 424 KB decoded message is incorrect
10 Halted 0 ms 0 KB -