Submission #832000

# Submission time Handle Problem Language Result Execution time Memory
832000 2023-08-20T19:30:52 Z Rifal Data Transfer (IOI19_transfer) C++14
0 / 100
5 ms 2504 KB
#include <bits/stdc++.h>
#include "transfer.h"
using namespace std;

vector<int> get_attachment(vector<int> source) {
    vector<int> v, vv; int sum = 0, sum2 = 0;
    for(int i = 0; i < source.size(); i++) {
       /// v.push_back(source[i]);
        if(source[i] == 1) { sum ^= (i + 1 ); }
    }
    int cnt2 = 0;
    for(int i = 0; i < 9; i++) {
        if((sum&(1<<i)) > 0) {
            vv.push_back(1);
        }
        else {
            vv.push_back(0);
        }
    }
    for(int i = 0; i < vv.size(); i++) {
       /// v.push_back(source[i]);
        if(vv[i] == 1) { sum2 ^= (i + 1 ); }
    }
     for(int i = 0; i < 8; i++) {
        if((sum2&(1<<i)) > 0) {
            v.push_back(1); cnt2++;
        }
        else {
            v.push_back(0);
        }
    }
    if(cnt2%2 == 0) v.push_back(0);
    else v.push_back(1);
   /*  cout << cnt2 << endl;
    for(int i = 0; i < v.size(); i++) {
        cout << v[i] << ' ';
    }
    cout << endl;*/
    return v;
}

vector<int> retrieve(vector<int> data) {
    vector<int> v, vv;
    int siz = data.size(); int a = 0, b = 0, c = 0, cnt = 0;
    for(int i = 0; i < siz-9; i++) {
        v.push_back(data[i]);
        if(data[i] == 1) a ^= (i+1);
    }
     for(int i = 0; i < 9; i++) {
        if((a&(1<<i)) > 0) {
            vv.push_back(1);
        }
        else {
            vv.push_back(0);
        }
    }
    for(int i = 0; i < vv.size(); i++) {
       /// v.push_back(source[i]);
        if(vv[i] == 1) { c ^= (i + 1); }
    }
    for(int i = siz-9; i < siz-2; i++) {
        if(data[i] == 1) {
            b += (1<<(i-(siz-9))); cnt++; }
    }
   /* cout << a << ' ' << b << ' ' << c << endl;
    for(int i = 0; i < v.size(); i++) {
        cout << v[i] << ' ';
    }
    cout << endl;
    cout << "JJJJJJJJJJJJJJ" << endl;
    for(int i = 0; i < vv.size(); i++) {
        cout << vv[i] << ' ';
    } cout << endl;

    cout << cnt << ' ' << data[siz-1] << endl;*/
    if(cnt%2 != data[siz-1]) return v;
    if(b == c) return v;
    int x = a ^(1<<((b^c)-1));
    v[(a^x)-1] ^= 1;
    return v;
}

Compilation message

transfer.cpp: In function 'std::vector<int> get_attachment(std::vector<int>)':
transfer.cpp:7:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    7 |     for(int i = 0; i < source.size(); i++) {
      |                    ~~^~~~~~~~~~~~~~~
transfer.cpp:20:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |     for(int i = 0; i < vv.size(); i++) {
      |                    ~~^~~~~~~~~~~
transfer.cpp: In function 'std::vector<int> retrieve(std::vector<int>)':
transfer.cpp:57:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |     for(int i = 0; i < vv.size(); i++) {
      |                    ~~^~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Incorrect 3 ms 644 KB WA in grader: wrong source retrieval
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 5 ms 2504 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -