Submission #583310

#TimeUsernameProblemLanguageResultExecution timeMemory
583310M_WSaveit (IOI10_saveit)C++17
50 / 100
336 ms12520 KiB
#include <bits/stdc++.h>
#include "encoder.h"
#include "grader.h"
#define ii pair<int, int>
using namespace std;


void encode(int nv, int nh, int ne, int *v1, int *v2){
  vector<int> adj[1001];
  for(int i = 0; i < ne; i++){
  	adj[v1[i]].push_back(v2[i]);
  	adj[v2[i]].push_back(v1[i]);
  }
  
  int dist[36][1001];
  bool vis[1001];
  for(int i = 0; i < nh; i++){
  	memset(vis, 0, sizeof vis);
  	queue<ii> q;
  	q.push({i, 0}); vis[i] = true;
  	while(!q.empty()){
  		auto [n, w] = q.front();
  		q.pop();
  		
  		dist[i][n] = w;
  		for(auto x : adj[n]){
  			if(vis[x]) continue;
			vis[x] = true;
			
			q.push({x, w + 1});	
		}
	}
  }
  
  for(int i = 0; i < nh; i++){
  	for(int j = 0; j < nv; j++){
  		for(int k = 0; k < 10; k++){
  			if(dist[i][j] & (1 << k)) encode_bit(1);
  			else encode_bit(0);
		  }
	  }
  }
  return;
}
#include <bits/stdc++.h>
#include "decoder.h"
#include "grader.h"
#define ii pair<int, int>
using namespace std;

void decode(int nv, int nh) {
  for(int i = 0; i < nh; i++){
  	for(int j = 0; j < nv; j++){
  		int ans = 0;
  		for(int k = 0; k < 10; k++){
  			if(decode_bit()) ans += (1 << k);
		}
		hops(i, j, ans);
	}
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...