Submission #896457

#TimeUsernameProblemLanguageResultExecution timeMemory
896457antonParrots (IOI11_parrots)C++17
81 / 100
3 ms1336 KiB
#include "encoder.h"
#include "encoderlib.h"
#include<bits/stdc++.h>

using namespace std;

void encode(int N, int M[])
{
  if(N<=32){
    int id = 0;
    for(int i=0; i<N; i++){
      for(int j = 0; j<8; j++){
        if((M[i] & (1<<j))!=0){
          send(id);
        }
        id++;
      }

    }
  }
  else{
    int nb1 = 0;
    for(int i=0; i<N; i++){
      for(int j = 0; j<8; j++){
        if((M[i] & (1<<j))!=0){
          nb1++;
        }
      }
    }
    //cout<<nb1<<endl;
    if(nb1<N*4){
      //cout<<"no swap"<<endl;
      int id = 0;
      for(int i=0; i<N; i++){
        for(int j = 0; j<8; j++){
          if((M[i] & (1<<j))!=0){
            send(id);
          }
          id++;
        }

      }
    }
    else{
      vector<int>mes(N);
      for(int i = 0; i<N; i++){
        mes[i] = M[i]^((1<<8)-1);
      }
      int id = 0;
      for(int i=0; i<N; i++){
        for(int j = 0; j<8; j++){
          if((mes[i] & (1<<j))!=0){
            //cout<<id<<endl;
            send(id);
          }
          id++;
        }
      }

      send((N-1)*8 + 7);
      send((N-1)*8 + 7);
    }
  }
}
#include "decoder.h"
#include "decoderlib.h"
#include<bits/stdc++.h>

using namespace std;

void decode(int N, int L, int X[])
{
  //cout<<"L "<<L<<endl;
  vector<int> v(L);

  for(int i = 0; i<L; i++){
    v[i] = X[i];
  }
  sort(v.begin(), v.end());
  vector<int> res(N);
  bool swaping = false;
  for(int i = 0; i<L; i++){
    if(i>0 && v[i]==v[i-1]){
      swaping = true;
    }
    res[v[i]/8]^=(1<<(v[i]%8));
  }
  for(auto e: res){
    //cout<<bitset<8>(e)<<endl;
  }

  if(swaping){
    //cout<<"swapping"<<endl;
    for(int i = 0; i<N; i++){
      res[i] ^= (1<<8)-1;
    }
  }

  for(auto e: res){
    //cout<<e<<endl;
  }

  for(auto e: res){
    output(e);
  }
}

Compilation message (stderr)

decoder.cpp: In function 'void decode(int, int, int*)':
decoder.cpp:24:12: warning: unused variable 'e' [-Wunused-variable]
   24 |   for(auto e: res){
      |            ^
decoder.cpp:35:12: warning: unused variable 'e' [-Wunused-variable]
   35 |   for(auto e: res){
      |            ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...