Submission #1176502

#TimeUsernameProblemLanguageResultExecution timeMemory
1176502simona1230Last supper (IOI12_supper)C++20
0 / 100
197 ms9520 KiB
#include <bits/stdc++.h>
#include "advisor.h"
using namespace std;

int a[100001],b;
void bin(int x)
{
    for(int i=0; i<b; i++)
        if(x&(1<<i))WriteAdvice(1);
        else WriteAdvice(0);
}

void ComputeAdvice(int *c, int n, int k, int m)
{
    for(int i=1; i<=n; i++)
    {
        a[i]=*c;
        int x=1,y=0;
        while(x*2<=a[i])x*=2,y++;
        b=max(y,b);
        c++;
    }

    for(int i=1;i<=n;i++)
        bin(a[i]);
}
#include <bits/stdc++.h>
#include "assistant.h"
using namespace std;

int c[100001],b;
int dec(string s)
{
    int x=0;
    for(int i=0;i<b;i++)
        if(s[i]=='1')x+=(1<<i);
    return x;
}

int id[100001],in[100001];
vector<int> p[100001];
struct cmp
{
    bool operator()(const int&x,const int&y)const
    {
        return p[x][id[x]]>p[y][id[y]];
    }
};

void Assist(unsigned char *a, int n, int k, int r)
{
    b=r/n;
    for(int i=1;i<=n;i++)
    {
        string s="";
        for(int id=(i-1)*b;id<i*b;id++)
        {
            s+=*a;
            a++;
        }
        c[i]=dec(s);
        p[c[i]].push_back(i);
    }
    for(int i=0;i<n;i++)
        p[i].push_back(n+1);

    vector<int> curr;
    set<int,cmp> s;

    for(int i=0;i<k;i++)
    {
        in[i]=1;
        s.insert(i);
    }

    for(int i=0;i<n;i++)
    {
        int x=GetRequest();
        if(in[x])
        {
            s.erase(x);
            id[x]++;
            s.insert(x);
            continue;
        }

        int y=*s.begin();
        in[y]=0;
        in[x]=1;
        PutBack(y);

        s.erase(y);
        id[x]++;
        s.insert(x);
    }
}
#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...