Submission #439910

#TimeUsernameProblemLanguageResultExecution timeMemory
439910hivakaramiSob (COCI19_sob)C++14
110 / 110
360 ms26384 KiB
#include<bits/stdc++.h>

 
using namespace std;
 
typedef long long int ll;
typedef long double ld;
#define f first
#define s second
#define pb push_back
#define pii pair<int, int>

 
const int N = 2e5 + 5;
const ll inf = 1e9 * 600;
const ll mod = 1e9 + 7;
const int lg = 30;


vector<pii> v[2], t[4];

void solve(int l, int r)
{
	if(l+1 == r)
	{
		cout << v[0][l].s << ' ' << v[1][l].s << '\n';
		return;
	}
		
	t[0].clear();
	t[1].clear();
	t[2].clear();
	t[3].clear();
	
	
	for(int i = l; i < r; i++)
	{
		if(v[0][i].f%2 == 0)
			t[0].pb({v[0][i].f/2, v[0][i].s});
		else
			t[2].pb({v[0][i].f/2, v[0][i].s});
	}
	
	if(t[0].size() > t[2].size() && v[1][l].f % 2 == 1)
		v[1][l].f--;
		
	for(int i = l; i < r; i++)
	{
		if(v[1][i].f%2 == 0)
			t[1].pb({v[1][i].f/2, v[1][i].s});
		else
			t[3].pb({v[1][i].f/2, v[1][i].s});
	}

	int sz0 = t[0].size();

	for(int i = l; i < l+sz0; i++)
	{
		v[0][i] = t[0][i-l];
		v[1][i] = t[1][i-l];
	}

	for(int i = l+sz0; i < r; i++)
	{
		v[0][i] = t[2][i-l-sz0];
		v[1][i] = t[3][i-l-sz0];
	}
		
	
	//cout << l << ' ' << r << endl;
	
	solve(l, l+sz0);
	solve(l+sz0, r);
	
}





int main()
{
    
    ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);	

	
	int n, m;
	cin >> n >> m;
	for(int i = 0; i < n; i++)
		v[0].pb({i, i});
	
	for(int i = m; i < m+n; i++)
		v[1].pb({i, i});

	solve(0, n);
		
	


	return 0;
}

 

 

 
 





#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...