Submission #30627

# Submission time Handle Problem Language Result Execution time Memory
30627 2017-07-25T14:53:30 Z samir_droubi Unscrambling a Messy Bug (IOI16_messy) C++14
100 / 100
7 ms 512 KB
#include <vector>

#include "messy.h"
#include <bits/stdc++.h>
using namespace std;
int m;
int bl[200];
int br[200];
void divide(int l,int r)
{
	if( l == r)return;
	string s="";
	for(int i = 0 ; i < m ; ++i)
		s+='1';
	for(int i = l ; i <= r; ++i)
		s[i] = '0';
	int md = ( l + r ) / 2 ;
	for(int i = l ; i <= md ; ++i)
	{
		s[i] = '1';
		add_element(s);
		s[i] = '0';
	}
	divide( l , md );
	divide( md + 1 , r );
}
void divide1(int l,int r)
{
	if( l == r)return;
	string s="";
	for(int i = 0 ; i < m ; ++i)
		s+='0';
	for(int i = 0 ; i < m ; ++i)
	{
		if(bl[i] > r) s[i] = '1';
		if(br[i] < l) s[i] = '1';
	}

	int md = ( l + r ) / 2 ;
	for(int i = 0 ; i < m ; ++i)
	{
		if(s[i] == '1')continue;
		s[i] = '1';
		if(check_element(s))
		{
			bl[i] = l;
			br[i] = md;
		}
		else
		{
			bl[i] = md + 1;
			br[i] = r;
		}
		s[i] = '0';
	}
	
	divide1( l , md );
	divide1( md + 1 , r );
}
std::vector<int> restore_permutation(int n, int w, int r) {
    m = n;
    
    divide( 0 , m - 1 );
    
    compile_set();
    
    divide1( 0 , m - 1 );
    
    vector<int>ans;
    for(int i = 0 ; i < m ; ++i)
    	ans.push_back(bl[i]);
    return ans;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB n = 8
2 Correct 2 ms 256 KB n = 8
3 Correct 2 ms 256 KB n = 8
4 Correct 2 ms 256 KB n = 8
5 Correct 2 ms 384 KB n = 8
6 Correct 2 ms 256 KB n = 8
7 Correct 2 ms 256 KB n = 8
8 Correct 2 ms 256 KB n = 8
9 Correct 2 ms 384 KB n = 8
10 Correct 2 ms 256 KB n = 8
11 Correct 2 ms 256 KB n = 8
12 Correct 2 ms 256 KB n = 8
13 Correct 2 ms 384 KB n = 8
14 Correct 2 ms 256 KB n = 8
15 Correct 2 ms 384 KB n = 8
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB n = 32
2 Correct 2 ms 384 KB n = 32
3 Correct 2 ms 384 KB n = 32
4 Correct 2 ms 384 KB n = 32
5 Correct 2 ms 384 KB n = 32
6 Correct 2 ms 256 KB n = 32
7 Correct 2 ms 256 KB n = 32
8 Correct 2 ms 384 KB n = 32
9 Correct 2 ms 384 KB n = 32
10 Correct 2 ms 384 KB n = 32
11 Correct 2 ms 384 KB n = 32
12 Correct 2 ms 384 KB n = 32
13 Correct 2 ms 384 KB n = 32
14 Correct 2 ms 256 KB n = 32
15 Correct 3 ms 384 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB n = 32
2 Correct 2 ms 256 KB n = 32
3 Correct 2 ms 256 KB n = 32
4 Correct 2 ms 256 KB n = 32
5 Correct 2 ms 384 KB n = 32
6 Correct 2 ms 256 KB n = 32
7 Correct 2 ms 384 KB n = 32
8 Correct 3 ms 384 KB n = 32
9 Correct 2 ms 256 KB n = 32
10 Correct 2 ms 256 KB n = 32
11 Correct 2 ms 384 KB n = 32
12 Correct 2 ms 384 KB n = 32
13 Correct 2 ms 384 KB n = 32
14 Correct 2 ms 384 KB n = 32
15 Correct 3 ms 384 KB n = 32
# Verdict Execution time Memory Grader output
1 Correct 3 ms 512 KB n = 128
2 Correct 3 ms 512 KB n = 128
3 Correct 3 ms 512 KB n = 128
4 Correct 3 ms 512 KB n = 128
5 Correct 4 ms 512 KB n = 128
6 Correct 7 ms 512 KB n = 128
7 Correct 4 ms 512 KB n = 128
8 Correct 3 ms 512 KB n = 128
9 Correct 3 ms 484 KB n = 128
10 Correct 4 ms 512 KB n = 128
11 Correct 4 ms 512 KB n = 128
12 Correct 4 ms 512 KB n = 128
13 Correct 3 ms 512 KB n = 128
14 Correct 3 ms 512 KB n = 128
15 Correct 3 ms 512 KB n = 128
# Verdict Execution time Memory Grader output
1 Correct 3 ms 512 KB n = 128
2 Correct 3 ms 512 KB n = 128
3 Correct 3 ms 512 KB n = 128
4 Correct 3 ms 512 KB n = 128
5 Correct 4 ms 512 KB n = 128
6 Correct 3 ms 512 KB n = 128
7 Correct 3 ms 512 KB n = 128
8 Correct 3 ms 512 KB n = 128
9 Correct 3 ms 512 KB n = 128
10 Correct 3 ms 512 KB n = 128
11 Correct 3 ms 512 KB n = 128
12 Correct 3 ms 512 KB n = 128
13 Correct 3 ms 512 KB n = 128
14 Correct 3 ms 512 KB n = 128
15 Correct 4 ms 512 KB n = 128