Submission #1174785

#TimeUsernameProblemLanguageResultExecution timeMemory
1174785vicvicPictionary (COCI18_pictionary)C++20
84 / 140
1595 ms1096 KiB
#include <iostream>

using namespace std;
const int NMAX=1e5;
int n, m, q, union_day[NMAX+5], t[NMAX+5];
int tatal (int nod)
{
    return t[nod]==0?nod:tatal (t[nod]);
}
void join (int a, int b, int d)
{
    a=tatal (a);
    b=tatal (b);
    if (a==b)
        return;
    t[a]=b;
    union_day[a]=d;
}
int query (int x, int y)
{
    int ret=0;
    while (x!=y)
    {
        if (union_day[x]>union_day[y])
            ret=union_day[x], x=t[x];
        else
            ret=union_day[y], y=t[y];
    }
    return ret;
}
int main ()
{
    ios :: sync_with_stdio (0);
    cin.tie (nullptr);
    cin >> n >> m >> q;
    for (int i=m;i>=1;i--)
    {
        for (int j=i+i;j<=n;j+=i)
        {
            join (i, j, i);
        }
    }
    while (q--)
    {
        int x, y;
        cin >> x >> y;
        cout << m+1-query (x, y) << "\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...