답안 #65863

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
65863 2018-08-09T04:41:22 Z lipschitz 앵무새 (IOI11_parrots) C++14
81 / 100
26 ms 2440 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>

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) {
	  for (i = 0; i < L-1; ) {
		  if ((X[i] >> 2) ^ seq) {
			  b[seq] = ans;
			  ans = 0;
			  seq = X[i] >> 2;
			  continue;
		  }

		  if ((X[i] & mask2)^(X[i+1] & mask2)) {
			  ans += (1 << (X[i] & mask2));
		  }
		  else {
			  ans += ((1 << (X[i] & mask2)) << 4);
			  i++;
		  }

		  i++;
	  }

	  if (i < L) {
		  ans += (1 << (X[L-1] & mask2));
	  }

	  b[seq] = ans;

	  for (int i = 0; i < N; i++) {
		  output(b[i]);
	  }
		  

	  return;
  }


  
  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]);
}
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 752 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 1600 KB Output is correct
2 Correct 6 ms 1712 KB Output is correct
3 Correct 6 ms 1840 KB Output is correct
4 Correct 7 ms 1912 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 1912 KB Output is correct
2 Correct 5 ms 2304 KB Output is correct
3 Correct 6 ms 2304 KB Output is correct
4 Correct 6 ms 2304 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 2304 KB Output is correct
2 Correct 5 ms 2304 KB Output is correct
3 Correct 7 ms 2304 KB Output is correct
4 Correct 9 ms 2304 KB Output is correct
5 Correct 7 ms 2304 KB Output is correct
6 Correct 8 ms 2304 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Partially correct 7 ms 2304 KB Output is partially correct - P = 8.000000
2 Partially correct 8 ms 2304 KB Output is partially correct - P = 8.000000
3 Incorrect 6 ms 2304 KB Error : Output is wrong
4 Incorrect 9 ms 2304 KB Error : Output is wrong
5 Incorrect 26 ms 2432 KB Error : Output is wrong
6 Incorrect 11 ms 2432 KB Error : Output is wrong
7 Incorrect 12 ms 2440 KB Error : Output is wrong