답안 #83308

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
83308 2018-11-06T22:12:28 Z thiago4532 Pictionary (COCI18_pictionary) C++17
56 / 140
1500 ms 10052 KB
#include <bits/stdc++.h>
#define div divisores

using namespace std;
const int maxn = 1e5 + 10;
int pai[maxn], peso[maxn], ans[maxn];

int n, m, q;

int gcd(int a, int b){
	return b ? gcd(b, a%b) : a;
}

void reset(){
	for(int i=1;i<=n;i++)
		pai[i] = i, peso[i] = 0;
}

int find(int u){
	return (pai[u] == u ? u : pai[u] = find(pai[u]));
}

inline void join(int a, int b){
	a = find(a);
	b = find(b);

	if(peso[a] == peso[b]) peso[b]++;
	else if(peso[a] > peso[b]) swap(a, b);

	pai[a] = b;
}
pair<int, int> qq[maxn];
bool marcado[maxn];

int main(){
	ios::sync_with_stdio(false), cin.tie(0);
	cin >> n >> m >> q;

	for(int i=1;i<=q;i++){
		int a, b;
		cin >> a >> b;
		qq[i] = pair<int, int>{a, b};
	}


	reset();
	for(int k=m;k>=1;k--){
		for(int i=2;i*k<=n;i++){
			if(find(k) != find(i*k)) join(k, i*k);
		}

		for(int l=1;l<=q;l++){
			if(marcado[l]) continue;
			if(find(qq[l].first) == find(qq[l].second)) ans[l] = m - k + 1, marcado[l] = true;
		}
	}	
	for(int i=1;i<=q;i++) cout << ans[i] << "\n";
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 376 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 47 ms 884 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 290 ms 2240 KB Output is correct
2 Correct 58 ms 2872 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 420 ms 3668 KB Output is correct
2 Correct 203 ms 4408 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1552 ms 4408 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1563 ms 4572 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1566 ms 5292 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 139 ms 7260 KB Output is correct
2 Execution timed out 1573 ms 7964 KB Time limit exceeded
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1569 ms 8676 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1570 ms 10052 KB Time limit exceeded
2 Halted 0 ms 0 KB -