Submission #1363786

#TimeUsernameProblemLanguageResultExecution timeMemory
1363786simona1230Data Transfer (IOI19_transfer)C++20
0 / 100
3 ms1724 KiB
#include "transfer.h"
#include <bits/stdc++.h>
using namespace std;


int pw,n;

std::vector<int> get_attachment(std::vector<int> source)
{
    n=source.size();
    if(n==63)pw=6;
    else pw=8;

    vector<int> r;

    for(int b=0;b<pw;b++)
    {
        int x=0;

        for(int i=0;i<n;i++)
        {
            if((i+1)&(1<<b))
            {
                x=x^source[i];
            }
        }

        r.push_back(x);
    }

    int all=0;
    for(int i=0;i<n;i++)
        all^=source[i];
    r.push_back(all);

    /*for(int i=0;i<r.size();i++)
        cout<<r[i]<<" ";
    cout<<endl;
    cout<<r.size()<<endl;*/

    return r;
}

std::vector<int> retrieve(std::vector<int> data)
{
    vector<int> ans;
    n=data.size();
    //cout<<data.size()<<endl;
    if(n==70)n=63,pw=6;
    else n=255,pw=8;


    vector<int> h;

    for(int b=0;b<=pw;b++)
    {
        int x=0;

        for(int i=0;i<n;i++)
        {
            if((i+1)&(1<<b))
            {
                x=x^data[i];
            }
        }

        h.push_back(x);
    }

    int all=0;
    for(int i=0;i<n;i++)
        all^=data[i];
    h.push_back(all);

    vector<int> v;
    int diff=0;
    for(int i=0;i<h.size()-1;i++)
    {
        if(h[i]!=data[i+n])
        {
            diff+=(1<<i);
            v.push_back(i);
        }
    }

    if(v.size()>1||v.size()==1&&h[h.size()-1]!=data[data.size()-1])
    {
        data[diff-1]^=1;
    }

    for(int i=0;i<n;i++)
    {
        ans.push_back(data[i]);
        //cout<<ans[i]<<" ";
    }
    //cout<<endl;
    return ans;
}
/*
1
5 000000000000000000000000000000000000000000000000000000000000000
*/

Compilation message (stderr)

grader.cpp: In instantiation of 'void shuffle(std::vector<T>&) [with T = Scenario]':
grader.cpp:200:10:   required from here
grader.cpp:28:23: warning: 'void std::random_shuffle(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator<Scenario*, vector<Scenario> >]' is deprecated: use 'std::shuffle' instead [-Wdeprecated-declarations]
   28 |         random_shuffle(v.begin(), v.end());
      |         ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:61,
                 from grader.cpp:8:
/usr/include/c++/13/bits/stl_algo.h:4581:5: note: declared here
 4581 |     random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last)
      |     ^~~~~~~~~~~~~~
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...