제출 #347511

#제출 시각아이디문제언어결과실행 시간메모리
347511daniel920712Parrots (IOI11_parrots)C++14
98 / 100
12 ms1568 KiB
#include "encoder.h"
#include "encoderlib.h"
#include <vector>
#include <algorithm>
using namespace std; 

void encode(int N, int M[])
{
	if(N<=32)
	{
		vector < pair < int , int > > all2;
	    int i,t=0;
	    for(i=0; i<N; i++)
	    {
	    	send(M[i]);
	    	send(M[i]);
	    	send(M[i]);
	    	send(M[i]);
	    	all2.push_back(make_pair(M[i],i));
		}
		sort(all2.begin(),all2.end());
		for(i=0;i<N;i++) 
		{
			send(i/8*32+all2[i].second);
			send(i/8*32+all2[i].second);
			send(i%8*32+all2[i].second);
			//printf("%d %d\n",i/8*32,i%8*32);
			
		}
	}
	else 
	{
		vector < int > a,b;
		vector < int > all;
		int i,j,now=0,x=0,y=0,K;
		b.push_back(0);
	    b.push_back(0);
	    b.push_back(0);
	    b.push_back(0);
	    for(i=0;i<N;i++) for(j=7;j>=0;j--) all.push_back(M[i]&(1<<j));
		K=all.size();
		for(i=0;i<K;i++)
		{
			if(all[i]) for(j=0;j<1<<(i/256);j++) a.push_back(i%256);
			else for(j=0;j<1<<(i/256);j++) b.push_back(i%256);	
		}
		if(a.size()<b.size()) for(auto i:a) send(i);
		else for(auto i:b) send(i);
	}
	
}
#include "decoder.h"
#include "decoderlib.h"
#include <map>
#include <vector>
#include <utility>
#include <algorithm>
using namespace std;

void decode(int N, int L, int X[])
{
	if(N<=32)
	{
		vector < int > all;
	    map < int , int > con;
	    int ans[305];
	    int where[305];
	    int i,j, b;
	    for(i=0; i<L; i++)
	    {
	        con[X[i]]++;
	    }
	 
	    for(auto i:con)
	    {
	        for(j=0;j<i.second/4;j++) all.push_back(i.first);
	    }
	    sort(all.begin(),all.end());
	    for(i=0;i<N;i++) 
		{
			
			where[i]=0;
		}
	    for(auto i:con)
	    {
	    	
	        if(i.second%4==2) where[i.first%32]+=i.first/32*8;
	        
	        else if(i.second%4==1) where[i.first%32]+=i.first/32;
			
			else if(i.second%4==3)
			{
				where[i.first%32]+=i.first/32;
				where[i.first%32]+=i.first/32*8;
			}
	    }
	    
	    for(i=0; i<N; i++) output(all[where[i]]);
			
		
	}
	else
	{
		vector < int > all;
	    map < int , int > con;
	    int ans[605];
	    
	    int i,j,ok=0,tt;
	    for(i=0; i<L; i++) con[X[i]]++;
	    
	
	    for(auto i:con) if(i.second&4) ok=1;
	    for(i=0;i<8*N;i++) ans[i]=ok;
	    for(auto i:con) 
	    {
			if(i.second&2) ans[i.first+256]=1-ok;
			if(i.second&1) ans[i.first]=1-ok;
		}
		
		for(i=0;i<N;i++)
		{
			tt=0;
			for(j=0;j<8;j++) tt+=(1<<(7-j))*ans[8*i+j];
			//printf("%d\n",tt);
			output(tt);
		}

	    
	}
    
}


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

encoder.cpp: In function 'void encode(int, int*)':
encoder.cpp:12:12: warning: unused variable 't' [-Wunused-variable]
   12 |      int i,t=0;
      |            ^
encoder.cpp:35:11: warning: unused variable 'now' [-Wunused-variable]
   35 |   int i,j,now=0,x=0,y=0,K;
      |           ^~~
encoder.cpp:35:17: warning: unused variable 'x' [-Wunused-variable]
   35 |   int i,j,now=0,x=0,y=0,K;
      |                 ^
encoder.cpp:35:21: warning: unused variable 'y' [-Wunused-variable]
   35 |   int i,j,now=0,x=0,y=0,K;
      |                     ^

decoder.cpp: In function 'void decode(int, int, int*)':
decoder.cpp:15:10: warning: unused variable 'ans' [-Wunused-variable]
   15 |      int ans[305];
      |          ^~~
decoder.cpp:17:15: warning: unused variable 'b' [-Wunused-variable]
   17 |      int i,j, b;
      |               ^
#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...