Submission #1026687

#TimeUsernameProblemLanguageResultExecution timeMemory
1026687vjudge1Sirni (COCI17_sirni)C++17
42 / 140
670 ms786432 KiB
#include <bits/stdc++.h>

using namespace std;

bool cmp(int a, int b)
{
    return a>b;
}
vector<int>p, sz;
void make_set(int n)
{
    p.resize(n);
    sz.resize(n);
    for(int i=0; i<n; i++)
    {
        p[i]=i;
        sz[i]=1;
    }
}
int Find(int i)
{
    if(p[i]==i)
        return i;
    return p[i]=Find(p[i]);
}
bool Union(int a, int b)
{
    a=Find(a), b=Find(b);
    if(a!=b)
    {
        if(sz[a]>sz[b])
            swap(a, b);
        p[a]=b;
        sz[b]+=sz[a];
        return 1;
    }
    return 0;
}

int main()
{
    int n;
    cin>>n;
    make_set(n);
    long long int a[n];
    long long rez=0;
    vector<pair<int, pair<int, int>>>v;
    for(int i=0; i<n; i++)
    {
        cin>>a[i];
    }
    sort(a, a+n, cmp);
    for(int i=0; i<n; i++)
    {
        for(int j=i+1; j<n; j++)
        {
            v.push_back(make_pair(a[i]%a[j], make_pair(i, j)));
        }
    }
    sort(v.begin(), v.end());
    int edges=0;
    for(int i=0; i<v.size(); i++)
    {
        if(edges==n-1)
            break;
        if(Union(v[i].second.first, v[i].second.second))
        {
            rez+=v[i].first;
            edges++;
        }
    }
    cout<<rez;

    return 0;
}

Compilation message (stderr)

sirni.cpp: In function 'int main()':
sirni.cpp:62:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, std::pair<int, int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   62 |     for(int i=0; i<v.size(); i++)
      |                  ~^~~~~~~~~
#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...