Submission #543675

#TimeUsernameProblemLanguageResultExecution timeMemory
543675Sho10Data Transfer (IOI19_transfer)C++17
100 / 100
105 ms2496 KiB
#include <bits/stdc++.h> //Andrei Alexandru a.k.a Sho
using ll=long long;
using ld=long double;
int const INF=1000000005;
ll const LINF=1000000000000000005;
ll const mod=1000000007;
ld const PI=3.14159265359;
ll const MAX_N=3e5+5;
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#define f first
#define s second
#define pb push_back
#define mp make_pair
#define endl '\n'
#define CODE_START  ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
vector<int> get_attachment(vector<int>source){
ll xr=0,cnt=0;
for(ll i=0;i<source.size();i++)
{
    if(source[i]==1){
        xr^=(i+1);
        cnt++;
    }
}
vector<int>g;
g.pb(cnt%2);
if(source.size()==255){
for(int i=0;i<=7;i++)
{
if((1ll<<i)&xr){
    g.pb(1);
}else g.pb(0);
}
}else {
for(ll i=0;i<=5;i++)
{
    if((1ll<<i)&xr){
        g.pb(1);
    }else g.pb(0);
}
}
return g;
}
vector<int> retrieve(vector<int>data){

if(data.size()>=200){
    ll x=data[255];
    ll cnt=0;
    ll xr=0;
    for(ll i=0;i<255;i++)
    {
        if(data[i]==1){
            cnt++;
            xr^=(i+1);
        }
    }
    vector<int>res;
    if(cnt%2==x){
for(ll i=0;i<255;i++)
{
    res.pb(data[i]);
}
return res;
    }
    for(ll i=256;i<data.size();i++)
    {
        if(data[i]==1){
            xr^=(1ll<<(i-256));
        }
    }
if(xr==0){
    for(ll i=0;i<255;i++)
    {
        res.pb(data[i]);
    }
    return res;
}
for(ll i=0;i<255;i++)
{
    res.pb(data[i]);
}
res[xr-1]^=1;
return res;
}else {
ll x=data[63];
    ll cnt=0;
    ll xr=0;
    for(ll i=0;i<63;i++)
    {
        if(data[i]==1){
            cnt++;
            xr^=(i+1);
        }
    }
    vector<int>res;
    if(cnt%2==x){
for(ll i=0;i<63;i++)
{
    res.pb(data[i]);
}
return res;
    }
    for(ll i=64;i<data.size();i++)
    {
        if(data[i]==1){
            xr^=(1ll<<(i-64));
        }
    }
if(xr==0){
    for(ll i=0;i<63;i++)
    {
        res.pb(data[i]);
    }
    return res;
}
for(ll i=0;i<63;i++)
{
    res.pb(data[i]);
}
res[xr-1]^=1;
return res;
}
}
/*
int32_t main(){
CODE_START;
#ifdef LOCAL
    ifstream cin("input.txt");
#endif
*/

Compilation message (stderr)

transfer.cpp: In function 'std::vector<int> get_attachment(std::vector<int>)':
transfer.cpp:20:13: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 | for(ll i=0;i<source.size();i++)
      |            ~^~~~~~~~~~~~~~
transfer.cpp: In function 'std::vector<int> retrieve(std::vector<int>)':
transfer.cpp:67:19: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |     for(ll i=256;i<data.size();i++)
      |                  ~^~~~~~~~~~~~
transfer.cpp:105:18: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  105 |     for(ll i=64;i<data.size();i++)
      |                 ~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...