Submission #393657

# Submission time Handle Problem Language Result Execution time Memory
393657 2021-04-24T08:01:25 Z Hazem Last supper (IOI12_supper) C++14
0 / 100
569 ms 32296 KB
#include <bits/stdc++.h>
#include "advisor.h"
#define S second

using namespace std;

void appendint(int x,int len){
	
	//printf("%d\n",x);
	for(int i=0;i<=len;i++)
		WriteAdvice(char((1<<i)&x>0));
}

const int N1 = 2e5+100;

int nxt[N1],last[N1];
vector<int>freq[N1];
map<int,int>pos;

void ComputeAdvice(int *C, int N, int K, int M) {

    int len = 0;
    for(int i=1;;i++){
		if((1<<i)>K)break;
		len = i;
	}
	
	int n = N;
	for(int i=0;i<n;i++)
		freq[C[i]].push_back(i);
	
	for(int i=0;i<n;i++)
		freq[i].push_back(n+100);
		
	set<pair<int,int>>st;
	set<int>st1;
	for(int i=0;i<K;i++)
		st.insert({freq[i][0],i}),st1.insert(i),pos[i] = i;
	
	for(int i=0;i<n;i++){
		
		if(st1.find(C[i])!=st1.end()){
			appendint(0,len);
      st.erase({i,C[i]});
      int nxt = upper_bound(freq[C[i]].begin(),freq[C[i]].end(),i)-freq[C[i]].begin();
			nxt = freq[C[i]][nxt];
      st.insert({nxt,C[i]});
    }
		
		else {
			
			auto it = st.rbegin();
			int val = (*it).S;
			
			st1.erase(val);
			st1.insert(C[i]);
			pos[C[i]] = pos[val];
			
			appendint(pos[val]+1,len);
			
			st.erase(*it);
			int nxt = upper_bound(freq[C[i]].begin(),freq[C[i]].end(),i)-freq[C[i]].begin();
			nxt = freq[C[i]][nxt];
			
			st.insert({nxt,C[i]});
		} 		
	}
}
#include <bits/stdc++.h>
#include "assistant.h"

using namespace std;

int a[2000000],vals[2000000];

int get(int idx,int len){
	
	int ret = 0;
	for(int i=idx;i<=idx+len;i++)
		ret += (1<<(i-idx))*a[i];
	
	return ret;
}

void Assist(unsigned char *A, int N, int K, int R) {
	
  // printf("%d\n",R);
	// for(int i=0;i<R;i++)
	// 	cout<<A[i];
		
	int len = 0;
	for(int i=0;;i++){
		if((1<<i)>K)break;
		len = i;
	}
	
	for(int i=0;i<K;i++)
		vals[i] = i;
		
	for(int i=0;i<R;i++)
		a[i] = A[i];
	
	int n = N;
	for(int i=0;i<n;i++){
		
		int val = GetRequest();
		int val1 = get(i*(len+1),len);
		
		if(!val1)continue;
		
		PutBack(vals[val1-1]);
		vals[val1-1] = val;
	}
}

Compilation message

advisor.cpp: In function 'void appendint(int, int)':
advisor.cpp:11:28: warning: suggest parentheses around comparison in operand of '&' [-Wparentheses]
   11 |   WriteAdvice(char((1<<i)&x>0));
      |                           ~^~
# Verdict Execution time Memory Grader output
1 Incorrect 4 ms 5244 KB Error - Not putting back color when it is not on the scaffold
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 39 ms 7380 KB Error - Not putting back color when it is not on the scaffold
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 411 ms 26028 KB Error - Not putting back color when it is not on the scaffold
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 6 ms 5624 KB Error - advice is too long
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 569 ms 30496 KB Error - Not putting back color when it is not on the scaffold
2 Incorrect 534 ms 30876 KB Error - Not putting back color when it is not on the scaffold
3 Incorrect 531 ms 31172 KB Error - Not putting back color when it is not on the scaffold
4 Incorrect 525 ms 31224 KB Error - Not putting back color when it is not on the scaffold
5 Incorrect 525 ms 31380 KB Error - Not putting back color when it is not on the scaffold
6 Incorrect 531 ms 31164 KB Error - Not putting back color when it is not on the scaffold
7 Incorrect 544 ms 31244 KB Error - Not putting back color when it is not on the scaffold
8 Incorrect 536 ms 31188 KB Error - Not putting back color when it is not on the scaffold
9 Incorrect 534 ms 31244 KB Error - Not putting back color when it is not on the scaffold
10 Incorrect 531 ms 32296 KB Error - Not putting back color when it is not on the scaffold