Submission #1171679

#TimeUsernameProblemLanguageResultExecution timeMemory
1171679PedroBigManShopping (JOI21_shopping)C++20
10 / 100
70 ms12724 KiB
#include "Anna.h"
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <string>
#include <map>
#include <unordered_map>
#include <set>
#include <unordered_set>
#include <queue>
#include <deque>
#include <list>
#include <iomanip>
#include <stdlib.h>
#include <time.h>
#include <cstring>
using namespace std;
typedef long long int ll;
typedef unsigned long long int ull;
typedef long double ld;
#define REP(i,a,b) for(ll i=(ll) a; i<(ll) b; i++)
#define pb push_back
#define mp make_pair
#define pl pair<ll,ll>
#define ff first
#define ss second
#define whole(x) x.begin(),x.end()
#define DEBUG(i) cout<<"Pedro Is The Master "<<i<<endl
#define INF 500000000LL
#define EPS 0.00000001
#define pi 3.14159

namespace 
{
	int N, L, R;
	vector<ll> r;
	ll curplace; ll cur;
}  // namespace

void InitA(int n, int l, int r) 
{
	N = n;
	L = l;
	R = r;
	for(ll i=13;i>=5;i--) {SendA(L&(1LL<<i));}
	for(ll i=13;i>=5;i--) {SendA(R&(1LL<<i));}
	curplace=0LL; cur=0LL;
}

void ReceiveA(bool x) 
{
  	if(x) {cur+=(1LL<<curplace);}
	curplace++; if(curplace==14) {curplace=0LL; r.pb(cur); cur=0LL;}
}

int Answer() 
{
	ll ind;
	if(R/32LL == L/32LL)
	{
		ind = L; ll val = r[L%32];
		REP(i,L%32,R%32 + 1)
		{
			if(r[i]<val) {val=r[i]; ind = L-(L%32)+i;}
		}
	}
	else
	{
		ind = r[64]; ll val = r[65];
		REP(i,L%32,32) 
		{
			if(r[i]<val) {val=r[i]; ind=L-(L%32)+i;}
		}
		REP(i,0,R%32 +1LL)
		{
			if(r[32+i]<val) {val=r[32+i]; ind=R-(R%32)+i;}
		}
	}
	return ind;
}
#include "Bruno.h"
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <string>
#include <map>
#include <unordered_map>
#include <set>
#include <unordered_set>
#include <queue>
#include <deque>
#include <list>
#include <iomanip>
#include <stdlib.h>
#include <time.h>
#include <cstring>
using namespace std;
typedef long long int ll;
typedef unsigned long long int ull;
typedef long double ld;
#define REP(i,a,b) for(ll i=(ll) a; i<(ll) b; i++)
#define pb push_back
#define mp make_pair
#define pl pair<ll,ll>
#define ff first
#define ss second
#define whole(x) x.begin(),x.end()
#define DEBUG(i) cout<<"Pedro Is The Master "<<i<<endl
#define INF 500000000LL
#define EPS 0.00000001
#define pi 3.14159

namespace 
{
	int N;
	vector<int> p;
	ll L,R; 
	ll ind;
}  // namespace

void InitB(int n, vector<int> P) 
{
	N=n; REP(i,0,N) {p.pb(P[i]);}
	L=0LL; R=0LL;
	ind=0LL;
	
}

void ReceiveB(bool y) 
{
	if(ind<9LL && y) {L+=(1LL<<(13LL-ind));}
	else if(y) {R+=(1LL<<(22LL-ind));}
	ind++;
	if(ind==18)
	{
		REP(i,L,L+32)
		{
			if(i>=N) {REP(j,0,14) {SendB(true);} continue;}
			REP(j,0,14) {SendB(p[i]&(1LL<<j));}
		}
		REP(i,R,R+32)
		{
			if(i>=N) {REP(j,0,14) {SendB(true);} continue;}
			REP(j,0,14) {SendB(p[i]&(1LL<<j));}
		}
		ll ind=(1LL<<14LL)-1LL; ll mv=(1LL<<14LL)-1LL;
		REP(i,L+32LL,R) 
		{
			if(i>=N) {continue;}
			if(p[i]<mv) {ind=i; mv=p[ind];}
		}
		REP(j,0,14) {SendB(ind&(1LL<<j));}
		REP(j,0,14) {SendB(mv&(1LL<<j));}
	}
  	return;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...