답안 #259508

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
259508 2020-08-07T23:52:42 Z themax23 Data Transfer (IOI19_transfer) C++17
0 / 100
3 ms 1152 KB
#include "transfer.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int MOD = 68;
std::vector<int> get_attachment(std::vector<int> source) {
    int n = (int)source.size();
    string bs = "";
    for(int i = 0; i < n; ++i ){
        if(source[i] == 0) bs += "0";
        else 			   bs += "1";
    }
    ull a = stoull(bs, 0, 2);
    int ans = a % MOD;
    string md = bitset<7>(ans).to_string();
    vector<int> K;

	for(int j = 0; j < 2; ++j){
    	for(int i = 0; i < (int) md.size(); ++i ){
        	if(md[i] == '0') K.push_back(0);
        	else             K.push_back(1);
    	}
	}
    return K;
}

std::vector<int> retrieve(std::vector<int> data) {
    int N = (int)data.size();
    string BS = "";
    for(int i = 0; i < 63; ++i ){
        if(data[i] == 0)   BS += "0";
        else               BS += "1";
    }
    string bs1 = "";
    for(int i = 63; i < 70; ++i ){
        if(data[i] == 0)   bs1 += "0";
        else               bs1 += "1";
    }
    string bs2 = "";
    for(int i = 70; i < N; ++i ){
        if(data[i] == 0)   bs2 += "0";
        else               bs2 += "1";
    }
    ull res = stoull(BS, 0, 2), check1 = stoull(bs1, 0, 2), check2 = stoull(bs2, 0, 2);
    res %= MOD;
    if(res == check1 || res == check2){
        vector<int> src1;
        for(int i = 0; i < 63; ++i ){
            if(data[i] == 0)   src1.push_back(0);
            else               src1.push_back(1);
        }
        return src1;
    }

    else{
        for(int i = 0; i < 63; ++i ){
            if(BS[i] == '0') BS[i] = '1';
            else             BS[i] = '0';
            ull check = stoull(BS, 0, 2);
            check %= MOD;
            if (check == check1 || check == check2){
                vector<int> src2;
                for(int i = 0; i < 63; ++i ){
                    if(BS[i] == '0')   src2.push_back(0);
                    else               src2.push_back(1);
                }
                return src2;
            }
            if(BS[i] == '0') BS[i] = '1';
            else             BS[i] = '0';
        }
    }

}

Compilation message

transfer.cpp: In function 'std::vector<int> retrieve(std::vector<int>)':
transfer.cpp:75:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 1040 KB WA in grader: wrong source retrieval
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 3 ms 1152 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -