Submission #553581

#TimeUsernameProblemLanguageResultExecution timeMemory
553581new_accBrunhilda’s Birthday (BOI13_brunhilda)C++14
20 / 100
95 ms82892 KiB
#include<bits/stdc++.h> #define fi first #define se second #define pitem item* using namespace std; typedef long long ll; typedef unsigned long long ull; typedef vector<int> vi; typedef vector<ll> vl; const int N=1e6+10; const int SS=1<<19; const int INFi=2e9; const ll INFl=1e13; const ll mod2=998244353; const ll mod=1e9+7; const ll mod3=1000696969; const ll p=70032301; const ull p2=913; const int L=20; int dp[N*10],ile[N*10],zap[N],t[N]; vi dziel[N]; void solve(){ int n,m; cin>>m>>n; for(int i=1;i<=m;i++) cin>>t[i]; int maxi=0; for(int i=1;i<=n;i++){ cin>>zap[i]; maxi=max(maxi,zap[i]); } for(int i=1;i<=m;i++) for(int j=t[i];j<=maxi;j+=t[i]) dziel[j].push_back(t[i]); deque<pair<int,int > >curr; for(int i=1;i<=m;i++) curr.push_back({0,t[i]}); for(int i=1;i<=maxi;i++){ for(auto u:dziel[i]) ile[u]++; while(curr.size() and ile[curr[0].se]>0) ile[curr[0].se]--,curr.pop_front(); if(!curr.size()) dp[i]=INFi; else dp[i]=min(curr[0].fi+1,INFi); for(auto u:dziel[i]) curr.push_back({dp[i],u}); } for(int i=1;i<=n;i++){ if(dp[zap[i]]==INFi) cout<<"oo\n"; else cout<<dp[zap[i]]<<"\n"; } } int main(){ ios_base::sync_with_stdio(0),cin.tie(0); solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...