제출 #295698

#제출 시각아이디문제언어결과실행 시간메모리
295698b00n0rpParrots (IOI11_parrots)C++17
17 / 100
8 ms1792 KiB
#include "encoder.h"
#include "encoderlib.h"
#include<bits/stdc++.h>
using namespace std;

#define REP(i,n) for(int i = 0; i < n; i ++)
#define FOR(i,a,b) for(int i = a; i < b; i ++)
#define vi vector<int>
#define pb push_back
#define F first
#define S second

void encode(int N, int M[]){
	int n = N;
	int a[105];
	REP(i,n) a[i] = M[i];

	vi v1,v2;

	REP(i,n){
		int times = 1;
		if(i >= 32) times++;

		int cur = (i%32)*8;
		REP(j,8){
			if(a[i]&(1<<j)){
				REP(k,times){
					v1.pb(cur+j);
				}
			}
			else{
				REP(k,times){
					v2.pb(cur+j);
				}
			}
		}
	}
	if(v1.size() <= 6*n){
		for(auto x:v1) send(x);
	}
	else{
		map<int,int> m;
		for(auto x:v2) m[x]++;
		for(auto x:m){
			if(x.S >= 2){
				m[x.F] += 2;
				break;
			}
		}
		for(auto x:m){
			REP(y,x.S) send(x.F);
		}
	}
}
#include "decoder.h"
#include "decoderlib.h"
#include<bits/stdc++.h>
using namespace std;

#define REP(i,n) for(int i = 0; i < n; i ++)
#define FOR(i,a,b) for(int i = a; i < b; i ++)
#define F first
#define S second

void decode(int N, int L, int X[]){
	int ans[105];
	REP(i,N) ans[i] = 0;

	map<int,int> m;
	REP(i,L) m[X[i]]++;

	bool flag = 0;
	for(auto x:m){
		if(x.S >= 4){
			flag = 1;
			m[x.F] -= 2;
			break;
		}
	}

	for(auto x:m){
		int ind = x.F/8;
		if(x.S&2) ans[ind+32] += (1<<(x.F%8));
		if(x.S&1) ans[ind] += (1<<(x.F%8));
	}
	if(!flag){
		REP(i,N) output(ans[i]);
	}
	else{
		REP(i,N) output(255-ans[i]);
	}
}

컴파일 시 표준 에러 (stderr) 메시지

encoder.cpp: In function 'void encode(int, int*)':
encoder.cpp:38:15: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   38 |  if(v1.size() <= 6*n){
      |     ~~~~~~~~~~^~~~~~
#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...