답안 #171246

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
171246 2019-12-28T04:57:08 Z dndhk 최후의 만찬 (IOI12_supper) C++14
0 / 100
589 ms 29848 KB
#include "advisor.h"
#include <bits/stdc++.h>

#define all(v) (v).begin(), (v).end()
#define sortv(v) sort(all(v))
#define uniqv(v) (v).erase(unique(all(v)), (v).end())
#define pb push_back
#define FI first
#define SE second
#define lb lower_bound
#define ub upper_bound
#define mp make_pair
#define test 1
#define TEST if(test)

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;

const int MAX_N = 100000;

vector<int> need[MAX_N+1];

bool chk[MAX_N+1];
priority_queue<pii> pq;
int t = 0;

void send(int x){
	for(int i=0; i<t; i++){
		WriteAdvice((x%2));
		x/=2;
	}
	return;
}

void ComputeAdvice(int *C, int N, int K, int M) {
	while((1<<t)-1<N+1){
		t++;
	}
	for(int i=1; i<=N; i++)	need[i].pb(N);
	for(int i=N-1; i>=0; i--){
		cout<<i<<" "<<C[i]<<endl;
		need[C[i]].pb(i);
	}
	for(int i=0; i<K; i++){
		pq.push(make_pair(need[i].back(), i));
		chk[i] = true;
	}
	for(int i=0; i<N; i++){
		int now = C[i];
		if(chk[now]){
			send((1<<t)-1);
		}else{
			pii p;
			while(1){
				p = pq.top(); pq.pop();
				if(need[p.second].empty() || need[p.second].back()!=p.first){
					continue;
				}
				break;
			}
			//cout<<i<<" "<<p.first<<" "<<p.second<<endl;
			send(p.second);
			chk[p.second] = false;
		}
		need[now].pop_back();
		pq.push(make_pair(need[now].back(), now));
		chk[now] = true;
	}
}
#include "assistant.h"
#include <bits/stdc++.h>

#define all(v) (v).begin(), (v).end()
#define sortv(v) sort(all(v))
#define uniqv(v) (v).erase(unique(all(v)), (v).end())
#define pb push_back
#define FI first
#define SE second
#define lb lower_bound
#define ub upper_bound
#define mp make_pair
#define test 1
#define TEST if(test)

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;


int tt;

void Assist(unsigned char *A, int N, int K, int R) {
	while((1<<tt)-1<N+1){
		tt++;
	}
	int idx = 0;
	for(int i=0; i<N; i++){
		int req = GetRequest();
		int now = 0;
		for(int k=0; k<tt; k++){
			now = now + (int)A[idx]*(1<<k);
			idx++;
		}
		if(now==(1<<tt)-1){
			continue;
		}else{
			PutBack(now);
		}
	}

}

Compilation message

assistant.cpp: In function 'void Assist(unsigned char*, int, int, int)':
assistant.cpp:33:7: warning: unused variable 'req' [-Wunused-variable]
   int req = GetRequest();
       ^~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 5360 KB Error - Invalid Access
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 58 ms 7608 KB Error - Invalid Access
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 476 ms 24592 KB Error - Invalid Access
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 28 ms 5640 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 580 ms 29408 KB Error - Invalid Access
2 Incorrect 584 ms 29144 KB Error - Invalid Access
3 Incorrect 538 ms 29080 KB Error - Invalid Access
4 Runtime error 352 ms 14456 KB Execution killed with signal 11 (could be triggered by violating memory limits)
5 Incorrect 553 ms 29144 KB Error - Invalid Access
6 Runtime error 353 ms 14412 KB Execution killed with signal 11 (could be triggered by violating memory limits)
7 Incorrect 589 ms 29848 KB Error - Invalid Access
8 Incorrect 562 ms 29280 KB Error - Invalid Access
9 Runtime error 350 ms 14328 KB Execution killed with signal 11 (could be triggered by violating memory limits)
10 Incorrect 549 ms 28648 KB Error - Invalid Access