Submission #272102

# Submission time Handle Problem Language Result Execution time Memory
272102 2020-08-18T09:01:29 Z 최은수(#5096) Last supper (IOI12_supper) C++14
0 / 100
2500 ms 2204 KB
#include"advisor.h"
#include<iostream>
#include<vector>
#include<set>
#include<algorithm>
#define ep emplace
#define eb emplace_back
#define fi first
#define se second
#define all(x) (x).begin(),(x).end()
using namespace std;
typedef long long ll;
typedef pair<int,int>pi;
typedef pair<ll,ll>pl;
const int inf=1e9+7;
const ll INF=1e18;
void ComputeAdvice(int*C,int N,int K,int M)
{
    set<pi,greater<pi> >st;
    vector<int>v(N,N);
    vector<int>nx=v;
    for(int i=N;i-->0;)
        nx[i]=v[C[i]],v[C[i]]=i;
    vector<int>adv(N,0);
    vector<bool>chk(N,0);
    for(int i=0;i<N;i++)
    {
        if(nx[i]==N)
            adv[i]=0;
        else
        {
            int cnt=0,mxcnt=0;
            for(int j=i+1;j<nx[i];j++)
            {
                if(adv[j]==0)
                {
                    if(chk[C[j]])
                        chk[C[j]]=0,cnt--;
                    continue;
                }
                if(!chk[C[j]])
                    chk[C[j]]=1,mxcnt=max(mxcnt,++cnt);
            }
            if(mxcnt<K)
                adv[i]=1;
            else
                adv[i]=0;
            for(int j=i+1;j<nx[i];j++)
                chk[C[j]]=0;
        }
    }
    vector<int>kadv(K,1);
    vector<int>lst;
    for(int i=0;i<K;i++)
    {
        if(v[i]!=N)
            lst.eb(i);
        else
            kadv[i]=0;
    }
    sort(all(lst),[&](const int&x,const int&y){return v[x]<v[y];});
    for(int i=0;i<(int)lst.size();i++)
    {
        int t=lst[i];
        int cnt=0,mxcnt=0;
        for(int j=i+1;j<(int)lst.size();j++)
        {
            if(kadv[lst[j]]==0)
            {
                if(chk[lst[j]])
                    chk[lst[j]]=0,cnt--;
                continue;
            }
            if(!chk[lst[j]])
                chk[lst[j]]=1,mxcnt=max(mxcnt,++cnt);
        }
        for(int j=0;j<v[t];j++)
        {
            if(adv[j]==0)
            {
                if(chk[C[j]])
                    chk[C[j]]=0,cnt--;
                continue;
            }
            if(!chk[C[j]])
                chk[C[j]]=1,mxcnt=max(mxcnt,++cnt);
        }
        if(mxcnt<K)
            kadv[t]=1;
        else
            kadv[t]=0;
        for(int j=i+1;j<(int)lst.size();j++)
            chk[lst[j]]=0;
        for(int j=0;j<v[t];j++)
            chk[C[j]]=0;
    }
    for(int i=0;i<K;i++)
        WriteAdvice(kadv[i]);
    for(int i=0;i<N;i++)
        WriteAdvice(adv[i]);
    return;
}
#include"assistant.h"
#include<iostream>
#include<vector>
#include<queue>
#include<set>
#include<algorithm>
#define ep emplace
#define eb emplace_back
#define fi first
#define se second
#define all(x) (x).begin(),(x).end()
using namespace std;
typedef long long ll;
typedef pair<int,int>pi;
typedef pair<ll,ll>pl;
const int inf=1e9+7;
const ll INF=1e18;
void Assist(unsigned char*A,int N,int K,int R)
{
    set<int>v1;
    queue<int>v2;
    for(int i=0;i<K;i++)
    {
        if(A[i]==1)
            v1.ep(i);
        else
            v2.ep(i);
    }
    for(int i=0;i<N;i++)
    {
        int c=GetRequest();
        auto it=v1.find(c);
        if(it==v1.end())
        {
            PutBack(v2.front());
            v2.pop();
        }
        else
            v1.erase(it);
        if(A[i+K]==1)
            v1.ep(c);
        else
            v2.ep(c);
    }
    return;
}
# Verdict Execution time Memory Grader output
1 Correct 2 ms 780 KB Output is correct
2 Correct 1 ms 776 KB Output is correct
3 Correct 6 ms 1016 KB Output is correct
4 Incorrect 4 ms 792 KB Error - Putting back a color that is not on the scaffold
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 106 ms 1460 KB Error - Putting back a color that is not on the scaffold
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2581 ms 1536 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 25 ms 804 KB Output is correct
2 Incorrect 27 ms 1108 KB Error - Putting back a color that is not on the scaffold
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2536 ms 1920 KB Time limit exceeded
2 Execution timed out 2576 ms 1920 KB Time limit exceeded
3 Execution timed out 2535 ms 1920 KB Time limit exceeded
4 Execution timed out 2577 ms 1920 KB Time limit exceeded
5 Execution timed out 2577 ms 1920 KB Time limit exceeded
6 Execution timed out 2559 ms 1920 KB Time limit exceeded
7 Execution timed out 2586 ms 1920 KB Time limit exceeded
8 Execution timed out 2596 ms 1920 KB Time limit exceeded
9 Execution timed out 2570 ms 1920 KB Time limit exceeded
10 Execution timed out 2573 ms 2204 KB Time limit exceeded