Submission #1364525

#TimeUsernameProblemLanguageResultExecution timeMemory
1364525activedeltorreTriple Peaks (IOI25_triples)C++20
Compilation error
0 ms0 KiB
#include "triples.h"
#include <cassert>
#include <cstdio>
#include <vector>
#include <random>
#include <iostream>

using namespace std;
long long count_triples(std::vector<int> H)
{
    int n=H.size(),hmax=0,z;
    for(int i=1; i<=n; i++)
    {
        hmax=max(hmax,H[i-1]);
    }
    int cnt=0;
    for(int i=1; i<=n; i++)
    {
        for(int j=i+1; j<=min(n,i+hmax); j++)
        {
            int j1=H[i-1];
            int j2=H[j-1];
            if(j1==j2)
            {
                z=j+j2;
                if(z<=n)
                {
                    if(j-i==j1 && H[z-1]==j1+j2)
                    {
                        cnt++;
                    }
                }
            }
            else
            {
                if(j1<j2)
                {
                    swap(j1,j2);
                }
                if(j2==j-i)
                {
                    z=j+j1;
                    if(z<=n)
                    {
                        if(H[z-1]==j1+j2)
                        {
                            cnt++;
                        }
                    }
                    z=i+j1;
                    if(z<=n)
                    {
                        if(H[z-1]==z-j)
                        {
                            cnt++;
                        }
                    }
                }
                else if(j1==j-i)
                {
                    z=j+j2;
                    if(z<=n)
                    {
                        if(H[z-1]==j1+j2)
                        {
                            cnt++;
                        }
                    }
                }
                else if(j1==j2+j-i)
                {
                    z=i+j1;
                    if(z<=n)
                    {
                        if(H[z-1]==j-i)
                        {
                            cnt++;
                        }
                    }
                }
            }
        }
    }
    return cnt;
}
mt19937 rng(69420);
vector<int>best;
vector<int>curr;
int gas=0;
void bkt(int poz,int M,int K,int maxval)
{
    if(gas==1)
    {
        return;
    }
    if(poz==M)
    {
        if(count_triples(curr)>K)
        {
            best=curr;
            gas=1;
        }
        return;
    }
    for(int i=1;i<=maxval;i++)
    {
        curr.push_back(i);
        bkt(poz+1,M,K,maxval);
        curr.pop_back();
    }
}
int arr[16]={1,1,1,1,3,2,3,4,1,2,1,3,1,6,5,4};
std::vector<int> construct_range(int M, int K,int maxval)
{
    for(int i=0; i<M; i++)
    {
        best.push_back(arr[i%16]);
    }
    //cout<<maxval<<'\n';
    //bkt(0,M,K,maxval);
    //cout<<count_triples(best)<<'\n';
    return best;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccVX2SPj.o: in function `main':
grader.cpp:(.text.startup+0x197): undefined reference to `construct_range(int, int)'
collect2: error: ld returned 1 exit status