Submission #746565

#TimeUsernameProblemLanguageResultExecution timeMemory
746565LucaGregPictionary (COCI18_pictionary)C++17
140 / 140
62 ms4488 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define ff first #define ss second #define int long long int const int INF = 2000000000000000; const int mod = 1000000007; int sz[100010]; pair<int, int> pai[100010]; int find(int v){ if(pai[v].ff==v) return v; return find(pai[v].ff); } void join(int a, int b, int w){ a = find(a); b = find(b); if(a==b) return; if(sz[a]>sz[b]) swap(a, b); sz[b] += sz[a]; pai[a].ff = b; pai[a].ss = w; } int query(int a, int b){ int repA = find(a); int repB = find(b); if(repA!=repB) return -1; if(a==b) return 0; set<pair<int, int> > listaA; int aCurW = 0; while(pai[a].ff!=a){ listaA.insert({a, aCurW}); aCurW = max(aCurW, pai[a].ss); a = pai[a].ff; } listaA.insert({a, aCurW}); int bCurW = 0; while(pai[b].ff!=b){ auto it = listaA.lower_bound({b, -INF}); if(it!=listaA.end() && (*it).ff==b) return max(bCurW, (*it).ss); bCurW = max(bCurW, pai[b].ss); b = pai[b].ff; } return max(aCurW, bCurW); } main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(0); int n, m, q; cin>>n>>m>>q; for(int i=1;i<=n;i++){ sz[i] = 1; pai[i].ff = i; pai[i].ss = 0; } int curMdc = m; for(int i=1;i<=m;i++){ for(int j=2;(j*curMdc)<=n;j++){ join(curMdc, j*curMdc, i); } curMdc--; } for(int i=1;i<=q;i++){ int a, b; cin>>a>>b; cout<<query(a, b)<<"\n"; } return 0; }

Compilation message (stderr)

pictionary.cpp:55:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   55 | main()
      | ^~~~
#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...