제출 #629141

#제출 시각아이디문제언어결과실행 시간메모리
629141zaneyu최후의 만찬 (IOI12_supper)C++14
0 / 100
2569 ms5688 KiB
#include "advisor.h" #include<bits/stdc++.h> using namespace std; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; typedef tree<long long,null_type,less_equal<long long>,rb_tree_tag,tree_order_statistics_node_update> indexed_set; //order_of_key #of elements less than x // find_by_order kth element using ll=long long; using ld=long double; using pii=pair<ll,ll>; #define f first #define s second #define pb push_back #define REP(i,n) for(int i=0;i<n;i++) #define REP1(i,n) for(int i=1;i<=n;i++) #define FILL(n,x) memset(n,x,sizeof(n)) #define ALL(_a) _a.begin(),_a.end() #define sz(x) (int)x.size() #define SORT_UNIQUE(c) (sort(c.begin(),c.end()),c.resize(distance(c.begin(),unique(c.begin(),c.end())))) #define GET(v,x) lower_bound(ALL(v),x)-v.begin() #define lowb(x) x&(-x) #define MNTO(x,y) x=min(x,(__typeof__(x))y) #define MXTO(x,y) x=max(x,(__typeof__(x))y) namespace { const int maxn=2e5+5; int nxt[maxn],lst[maxn]; bool in[maxn],del[maxn]; } void ComputeAdvice(int *C, int n, int k, int M) { priority_queue<pii> pq; REP(i,n) lst[i]=n; for(int i=n-1;i>=0;i--){ nxt[i]=lst[C[i]]; lst[C[i]]=i; } REP(i,k) pq.push({lst[i],i}),in[i]=1; REP(i,n){ if(!in[C[i]]){ int z=pq.top().s; pq.pop(); del[z]=1; if(z<k) in[z]=0; else in[C[z-k]]=0; in[C[i]]=1; pq.push({nxt[i],i+k}); } } REP(i,n+k) WriteAdvice(del[i]); }
#include "assistant.h" #include<bits/stdc++.h> using namespace std; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; typedef tree<long long,null_type,less_equal<long long>,rb_tree_tag,tree_order_statistics_node_update> indexed_set; //order_of_key #of elements less than x // find_by_order kth element using ll=long long; using ld=long double; using pii=pair<ll,ll>; #define f first #define s second #define pb push_back #define REP(i,n) for(int i=0;i<n;i++) #define REP1(i,n) for(int i=1;i<=n;i++) #define FILL(n,x) memset(n,x,sizeof(n)) #define ALL(_a) _a.begin(),_a.end() #define sz(x) (int)x.size() #define SORT_UNIQUE(c) (sort(c.begin(),c.end()),c.resize(distance(c.begin(),unique(c.begin(),c.end())))) #define GET(v,x) lower_bound(ALL(v),x)-v.begin() #define lowb(x) x&(-x) #define MNTO(x,y) x=min(x,(__typeof__(x))y) #define MXTO(x,y) x=max(x,(__typeof__(x))y) namespace { const int maxn=2e5+5; bool in[maxn]; } void Assist(unsigned char *A, int n, int k, int R) { set<int> s; REP(i,k){ in[i]=1; if(A[i]) s.insert(i); } REP(i,n){ int x=GetRequest(); if(!in[x]){ int z=(*s.begin()); s.erase(s.begin()); in[z]=0,in[x]=1; PutBack(z); } if(A[i+k]){ assert(!s.count(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...