Submission #829949

#TimeUsernameProblemLanguageResultExecution timeMemory
829949MODDILast supper (IOI12_supper)C++14
0 / 100
115 ms144092 KiB
#include <bits/stdc++.h> #include "advisor.h" using namespace std; #define pb push_back #define mp make_pair typedef long long ll; typedef vector<int> vi; typedef vector<ll> vl; typedef pair<int,int> pii; typedef pair<ll, ll> pll; int n; stack<int> G[100105]; set<pii> activasion; set<int> in_pq; vi advice, out; void ComputeAdvice(int *C, int N, int K, int M) { n = N; for(int i=n-1;i>=0;i--) G[C[i]].push(i); for(int i=0;i<K;i++){ int when=n+1; if(!G[i].empty()) when=G[i].top(); activasion.emplace(mp(when, i)); in_pq.insert(i); } for(int i = 0; i < n + K; i++) advice.pb(1); for(int i = 0; i < K; i++) out.pb(i); for(int i=0;i<n;i++){ G[C[i]].pop(); out[C[i]]=K+i; if(in_pq.find(C[i])==in_pq.end()){ pii sega =*activasion.rbegin(); activasion.erase(*activasion.rbegin()); in_pq.erase(sega.second); advice[out[sega.second]]=0; } int when=0; in_pq.emplace(C[i]); if(G[C[i]].empty()) when=n+1; else when=G[C[i]].top(); activasion.insert(mp(when, C[i])); } for(int i = 0; i < n+K; i++) WriteAdvice(advice[i]); }
#include "assistant.h" #include<bits/stdc++.h> using namespace std; void Assist(unsigned char *A, int N, int K, int R) { int n = N; set<int> odma, in; for(int i=0;i<K;i++){ if(A[i] == 0) odma.insert(i); in.insert(i); } for(int i=0;i<n;i++){ int adv=GetRequest(); if(in.find(adv)==in.end()){ PutBack(*odma.begin()); in.erase(*odma.begin()); odma.erase(odma.begin()); } in.emplace(adv); if(A[i+K]==0) odma.emplace(adv); } }
#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...