Submission #1364877

#TimeUsernameProblemLanguageResultExecution timeMemory
1364877gvancakParrots (IOI11_parrots)C++20
0 / 100
1 ms1348 KiB
#include "encoder.h"
#include "encoderlib.h"
#include <bits/stdc++.h>
#define f first
#define s second
#define pb push_back
#define mp make_pair
#define ll long long
using namespace std;

vector <ll> axali;
void sheqmna(){
	axali.clear();
	for (int i=0; i<256; i++) axali.pb(i);
	random_shuffle(axali.begin(), axali.end());
}
vector <ll> v[340];
ll cnt,cnt1;
void generate(int p){
	cnt=0; cnt1=0; if (axali.size()==0) sheqmna();
	for (int i=0; i<=p; i++){
		for (int j=0; j<=p; j++){
			for (int k=0; k<=p; k++){
				for (int o=0;o<=p; o++){
					if (i+j+k+o<=p){
					  if (i+j+k+o==7 && cnt1>45)continue;
						if (i+j+k+o==7) cnt1++;
					//	cout<<axali[cnt]<<endl;
					 v[axali[cnt]].pb(i); v[axali[cnt]].pb(j); v[axali[cnt]].pb(k); v[axali[cnt]].pb(o); 	cnt++;
					}
				}
			}
		}
	}
}

void encode(int N, int M[])
{
	generate(7);
//	cout<<v[10].size()<<endl;
	ll n=N;
	ll pw[10];
	pw[0]=1;
	ll x=0;
	for (int i=1; i<=8; i++) pw[i]=2*pw[i-1];
	vector <ll> v2[n+5];
	for (int i=0; i<n; i++){
		x=0;
		for (int j=0; j<=5; j++){
			if ((i&((1<<j)))==0) continue;
			x+=pw[j+2];
		}
		for (int j=1; j<=7; j++) v2[i].pb(x);
	}
	ll st[10],ind,k,num[10];
	for (int i=0; i<n; i++){
//	cout<<M[i]<<endl;
//	cout<<v[M[i]].size()<<endl;
for (int j=0; j<256; j++){
			if (axali[j]==M[i]){
				M[i]=j; break;
			}
		}
		st[0]=v[M[i]][0]; st[1]=st[0]+v[M[i]][1];
		st[2]=st[1]+v[M[i]][2]; st[3]=st[2]+v[M[i]][3];
		ind=0;
		k=0;	
	//	cout<<"STTT "<<st[0]<<st[1]<<st[2]<<st[3]<<endl;
		for (int j=0; j<7; j++){
		//	cout<<"before: "<<v2[i][j]<<endl;
			while (ind<=3 && j>=st[ind]) ind++;
			if (ind>3) {k++; continue; }
			v2[i][j]+=ind;
		//		cout<<"after: "<<v2[i][j]<<endl;
		}	
		while (k--) v2[i].pop_back();
	
	}	
	for (int i=0; i<n; i++){
		for (int j=0; j<v2[i].size(); j++){
		send(v2[i][j]);
	}
	}

}
#include "decoder.h"
#include "decoderlib.h"
#include <bits/stdc++.h>
#define f first
#define s second
#define pb push_back
#define mp make_pair
#define ll long long
using namespace std;

vector <ll> axali;
void sheqmna(){
	axali.clear();
	for (int i=0; i<256; i++) axali.pb(i);
	random_shuffle(axali.begin(), axali.end());
}
vector <ll> v[340];
ll cnt,cnt1;
void generate(int p){
	cnt=0; cnt1=0; if (axali.size()==0) sheqmna();
	for (int i=0; i<=p; i++){
		for (int j=0; j<=p; j++){
			for (int k=0; k<=p; k++){
				for (int o=0;o<=p; o++){
					if (i+j+k+o<=p){
					  if (i+j+k+o==7 && cnt1>45)continue;
						if (i+j+k+o==7) cnt1++;
					//	cout<<axali[cnt]<<endl;
					 v[axali[cnt]].pb(i); v[axali[cnt]].pb(j); v[axali[cnt]].pb(k); v[axali[cnt]].pb(o); 	cnt++;
					}
				}
			}
		}
	}
}
void decode(int n, int l, int a[])
{
	generate(7);
	int N=n;
	vector <ll> v1[N+1];
	ll x=0,y;
	for (int i=0; i<l; i++){
		x=0;
		for (int j=2; j<=7; j++){
			if ((a[i]&((1<<j)))==0) continue;
			x+=(1<<(j-2));
		}
		y=0; 
		if ((a[i]&2)==2) y+=2; if ((a[i]&1)==1) y+=1;
	//	cout<<x<<" "<<y<<endl;
		v1[x].pb(y); 
	}	
	for (int i=0; i<n; i++) sort(v1[i].begin(),v1[i].end());
	ll raod[10],vin;
	for (int me=0; me<n; me++){
		raod[0]=raod[1]=raod[2]=raod[3]=0;
		for (int shen=0; shen<v1[me].size(); shen++){
			raod[v1[me][shen]]++;
		}
		cnt=0; cnt1=0;
	for (int i=0; i<=7; i++){
		for (int j=0; j<=7; j++){
			for (int k=0; k<=7; k++){
				for (int o=0;o<=7; o++){
					if (i+j+k+o>7) continue;
					if (i+j+k+o==7 && cnt1>45)continue;
						if (i+j+k+o==7) cnt1++;
					if (i==raod[0] && j==raod[1] && k==raod[2] && o==raod[3]){
						vin=axali[cnt]; break;
					}cnt++;
				}
			}
		}
		
	}
//	cout<<vin<<endl;
	output(vin);
	}
	
	
	
	
	
	
	
}

Compilation message (stderr)

# 1번째 컴파일 단계

encoder.cpp: In function 'void sheqmna()':
encoder.cpp:15:23: warning: 'void std::random_shuffle(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator<long long int*, vector<long long int> >]' is deprecated: use 'std::shuffle' instead [-Wdeprecated-declarations]
   15 |         random_shuffle(axali.begin(), axali.end());
      |         ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:61,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51,
                 from encoder.cpp:3:
/usr/include/c++/13/bits/stl_algo.h:4581:5: note: declared here
 4581 |     random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last)
      |     ^~~~~~~~~~~~~~

# 2번째 컴파일 단계

decoder.cpp: In function 'void sheqmna()':
decoder.cpp:15:23: warning: 'void std::random_shuffle(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator<long long int*, vector<long long int> >]' is deprecated: use 'std::shuffle' instead [-Wdeprecated-declarations]
   15 |         random_shuffle(axali.begin(), axali.end());
      |         ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:61,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:51,
                 from decoder.cpp:3:
/usr/include/c++/13/bits/stl_algo.h:4581:5: note: declared here
 4581 |     random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last)
      |     ^~~~~~~~~~~~~~
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...