Submission #65892

# Submission time Handle Problem Language Result Execution time Memory
65892 2018-08-09T05:36:31 Z lipschitz Parrots (IOI11_parrots) C++14
81 / 100
12 ms 2528 KB
#include "encoder.h"
#include "encoderlib.h"

void encode(int N, int M[])
{
	int i;

	if (N > 32) {
		int mask = 0x000f;

		for (i = 0; i < N; i++) {
			int seq = i << 2;
			int temp = M[i]&mask;

			for (int j = 0; j < 4; j++) {
				if (temp & 1) {
					send(seq + j);
				}

				temp >>= 1;
			}

			temp = (M[i] >> 4)&mask;

			for (int j = 0; j < 4; j++) {
				if (temp & 1) {
					send(seq + j);
					send(seq + j);
				}

				temp >>= 1;
			}
		}

		return;
	}


  

  for (i = 0; i < N; i++) {
	  int seq = i << 3;
	  int temp = M[i];

	  for (int j = 0; j < 8; j++) {
		  if (temp & 1) {
			  send(seq + j);
		  }

		  temp >>= 1;
	  }
  }
}
#include "decoder.h"
#include "decoderlib.h"
#include<algorithm>
#include<vector>

using namespace std;

void decode(int N, int L, int X[])
{
  int i, mask = 0x0007, mask2 = 0x0003;
  int b[64];

  for (int i = 0; i < 64; i++)
	  b[i] = 0;

  sort(X, X + L);
  int seq = 0, ans = 0;

  if (N > 32) {
	  vector<int> Y;
	  int temp = ((X[0] << 1)&(~mask)) | (X[0] & mask2);
	  Y.push_back(temp);

	  for (i = 1; i < L; i++) {
		  temp = ((X[i] << 1)&(~mask)) | (X[i] & mask2);
		  if (temp^Y.back()) {
			  Y.push_back(temp);
			  continue;
		  }

		  Y.pop_back();
		  Y.push_back(temp + 4);
	  }

	  i = 0;

	  while (!Y.empty()) {
		  X[i++] = Y.back();
		  Y.pop_back();
	  }

	  L = i;
	  sort(X, X + L);
  }


  
  for(i=0; i<L; i++) {
	  if ((X[i] >> 3)^seq) {
		  b[seq] = ans;
		  ans = 0;
		  seq = X[i] >> 3;
	  }

	  ans += (1 << (X[i] & mask));	  
  }

  b[seq] = ans;

  for (int i = 0; i < N; i++)
	  output(b[i]);
}
# Verdict Execution time Memory Grader output
1 Correct 5 ms 1008 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 8 ms 2032 KB Output is correct
2 Correct 8 ms 2032 KB Output is correct
3 Correct 8 ms 2064 KB Output is correct
4 Correct 7 ms 2064 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 7 ms 2160 KB Output is correct
2 Correct 6 ms 2416 KB Output is correct
3 Correct 7 ms 2416 KB Output is correct
4 Correct 6 ms 2416 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 2416 KB Output is correct
2 Correct 8 ms 2416 KB Output is correct
3 Correct 6 ms 2416 KB Output is correct
4 Correct 9 ms 2416 KB Output is correct
5 Correct 8 ms 2416 KB Output is correct
6 Correct 8 ms 2416 KB Output is correct
# Verdict Execution time Memory Grader output
1 Partially correct 7 ms 2416 KB Output is partially correct - P = 8.000000
2 Partially correct 9 ms 2416 KB Output is partially correct - P = 8.000000
3 Incorrect 10 ms 2416 KB Error : Output is wrong
4 Incorrect 10 ms 2416 KB Error : Output is wrong
5 Incorrect 11 ms 2528 KB Error : Output is wrong
6 Incorrect 12 ms 2528 KB Error : Output is wrong
7 Incorrect 11 ms 2528 KB Error : Output is wrong