Submission #1367768

#TimeUsernameProblemLanguageResultExecution timeMemory
1367768laurraMagic Show (APIO24_show)C++20
0 / 100
1 ms352 KiB
#include <vector>
#include "Alice.h"

using namespace std;

vector<pair<int,int>> Alice()
{
    vector<pair<int,int>> muchie;
    long long x = setN(5000),val,cat,rest,U,i,prim;
    val=x-1;
    /// Simplu
    if(val>=24995000)
    {
        U=val-24995000+1;
        for(i=1;i<=5000;i++)
        {
            if(i == U) 
                continue;
            muchie.push_back({U,i});
        }
        return muchie;
    }
    /// Dublu
    rest=(val%5000)+1;
    cat=val/5000;

    vector<int> L;
    for(i=1;i<=5000;i++)
    {
        if(i!=rest) 
            L.push_back(i);
    }
    prim=L[cat];
    
    vector<int> L2;
    for(i=0;i<4999;i++)
    {
        if(L[i]!=prim) 
            L2.push_back(L[i]);
    }

    muchie.push_back({U,prim}); 
    for(i=0;i<2499;i++) 
        muchie.push_back({U,L2[i]}); 
    for(i=2499;i<4998;i++) 
        muchie.push_back({prim,L2[i]}); 

    return muchie;
}
#include <vector>
#include "Bob.h"

using namespace std;

long long Bob(vector<pair<int,int>> V_edges)
{
    int i,V_idx,V_nod;
    vector<int> deg(5005, 0);
    for(auto edge : V_edges)
    {
        deg[edge.first]++;
        deg[edge.second]++;
    }

    vector<int> candidates_U;
    for(i=1;i<=5000;i++)
    {
        if(deg[i]>=2) 
            candidates_U.push_back(i);
    }

    for(int U:candidates_U)
    {
        vector<int> L,L2;
        for(i=1;i<=5000;i++)
        {
            if(i!=U) 
                L.push_back(i);
        }

        for(V_idx=0;V_idx<4999;V_idx++)
        {
            V_nod = L[V_idx];
            L2.clear();
            for(i=0;i<4999;i++)
            {
                if(L[i]!=V_nod) 
                    L2.push_back(L[i]);
            }

            vector<int> parent(5005, 0); 
            parent[V_nod] = 1; 
            for(i=0;i<2499;i++) 
                parent[L2[i]] = 1; 
            for(i=2499;i<4998;i++) 
                parent[L2[i]] = 2; 

            bool is_match=true;
            for(auto [u,v] : V_edges)
            {
                bool covered = false;
                if(u == U && parent[v] == 1) 
                    covered = true;
                else if(v == U && parent[u] == 1) 
                    covered = true;
                else if(u == V_nod && parent[v] == 2) 
                    covered = true;
                else if(v == V_nod && parent[u] == 2) 
                    covered = true;

                if(covered==false)
                {
                    is_match = false; 
                    break;
                }
            }

            if(is_match==true)
            {
                return (long long)V_idx * 5000 + (U - 1) + 1;
            }
        }
    }

    int maxi;
    maxi=1;
    for(i=1;i<=5000;i++)
    {
        if(deg[i]>deg[maxi])
            maxi=i;
    }
    
    return 24995000LL+maxi;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...