Submission #1363872

#TimeUsernameProblemLanguageResultExecution timeMemory
1363872activedeltorreHieroglyphs (IOI24_hieroglyphs)C++20
0 / 100
26 ms5672 KiB
#include "hieroglyphs.h"
#include <cassert>
#include <cstdio>
#include <vector>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int pos=1;
int min1[200005];
int max1[200005];
int min2[200005];
int max2[200005];
int nmax=200000;
bool cmp(int a,int b)
{
    if(max1[a]>max1[b] && max2[a]>max2[b])
    {
        return false;
    }
    else if(min1[a]<min1[b] && min2[a]<min2[b])
    {
        return true;
    }
    if(max1[b]>max1[a] && max2[b]>max2[a])
    {
        return true;
    }
    else if(min1[b]<min1[a] && min2[b]<min2[a])
    {
        return false;
    }
    pos=0;
    return true;
}
std::vector<int> ucs(std::vector<int> A, std::vector<int> B)
{
    pos=1;
    int n=A.size();
    int m=B.size();
    for(int i=0;i<=nmax;i++)
    {
        max1[i]=-1;
        max2[i]=-1;
        min1[i]=n+1;
        min2[i]=m+1;
    }
    for(int i=0;i<n;i++)
    {
        min1[A[i]]=min(min1[A[i]],i);
        max1[A[i]]=max(max1[A[i]],i);
    }
    //cout<<"plm";
    for(int i=0;i<m;i++)
    {
        min2[B[i]]=min(min2[B[i]],i);
        max2[B[i]]=max(max2[B[i]],i);
    }
    vector<int>vals;
    for(int i=0;i<=nmax;i++)
    {
        if(max1[i]!=-1 && max2[i]!=-1)
        {
            vals.push_back(i);
            //cout<<i<<" ";
        }
    }
    sort(vals.begin(),vals.end(),cmp);
    if(pos==0)
    {
        return {-1};
    }
    return vals;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...