Submission #237515

#TimeUsernameProblemLanguageResultExecution timeMemory
237515VEGAnnPictionary (COCI18_pictionary)C++14
0 / 140
52 ms9332 KiB
#include <bits/stdc++.h> #define PB push_back #define sz(x) ((int)x.size()) using namespace std; typedef long long ll; const int N = 200100; vector<int> qr[N]; int pr[N], n, m, q, x[N], y[N], L[N], R[N], mid[N]; int get(int x) { return (pr[x] == x ? x : pr[x] = get(pr[x])); } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); #ifdef _LOCAL freopen("in.txt","r",stdin); #endif // _LOCAL cin >> n >> m >> q; for (int i = 0; i < q; i++){ cin >> x[i] >> y[i]; L[i] = 1; R[i] = m; } bool was = 1; while (was){ was = 0; for (int i = 0; i < q; i++) if (L[i] < R[i]){ mid[i] = (L[i] + R[i] + 1) >> 1; qr[mid[i]].PB(i); } for (int i = 1; i <= n; i++) pr[i] = i; for (int i = m; i > 1; i--){ for (int j = i + i; j <= n; j += i) pr[get(j)] = get(i); if (sz(qr[i])) { for (int nm : qr[i]) if (get(x[nm]) == get(y[nm])) L[i] = mid[i]; else R[i] = mid[i - 1]; qr[i].clear(); } } } for (int i = 0; i < q; i++) cout << L[i] << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...