275 2021. 06. 22 15:24:49 mraron Az óvodai lét elviselhetetlen könnyűsége #2 cpp14 Elfogadva 100/100 1.077s 180728 KiB
#include<iostream>
#include<vector>
#include<map>
#include<set>
#include<cassert>
#include<cassert>
#include<unordered_map>
#include<unordered_set>
#include<functional>
#include<queue>
#include<stack>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<sstream>
#include<iomanip>
#include<cstdio>
#include<cstdlib>
#include<numeric>
#include<random>
#include<chrono>
#include<bitset>
using namespace std;

#define all(x) (x).begin(), (x).end()
#define pb push_back
#define xx first
#define yy second
#define sz(x) (int)(x).size()
#define gc getchar
#define IO ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define mp make_pair

#ifndef ONLINE_JUDGE
#  define LOG(x) (cerr << #x << " = " << (x) << endl)
#else
#  define LOG(x) ((void)0)
#endif

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;

const double PI=3.1415926535897932384626433832795;
const ll INF = 1LL<<62;
const ll MINF = -1LL<<62;

template<typename T> T getint() {
	T val=0;
	char c;
	
	bool neg=false;
	while((c=gc()) && !(c>='0' && c<='9')) {
		neg|=c=='-';
	}

	do {
		val=(val*10)+c-'0';
	} while((c=gc()) && (c>='0' && c<='9'));

	return val*(neg?-1:1);
}

//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); uniform_int_distribution<int>(0, n-1)(rng)

const int MAXN=10100001;
int ans[MAXN];
int mn[MAXN];

int main() {
	IO;
    int m,q;
    cin>>m>>q;
    
    vector<int> nums;
    for(int i=0;i<m;++i) {
        int x;
        cin>>x;
        if(x>1) nums.push_back(x);
    }
    
    nums.resize(distance(nums.begin(), unique(all(nums))));
    assert(sz(nums)==m);

    for(int i=0;i<MAXN;++i) mn[i]=1e9;
    
    for(int i:nums) {
        for(int j=0;j+i-1<MAXN;j+=i) {
            mn[j+i-1]=min(mn[j+i-1], j);
        }
    }
    for(int i=MAXN-2;i>=0;i--) {
        mn[i]=min(mn[i], mn[i+1]);
    }
    
    for(int i=1;i<MAXN;++i) {
        if(mn[i]<i) ans[i]=ans[mn[i]]+1;
        else break; 
    }
    
    for(int i=0;i<q;++i) {
        int akt;
        cin>>akt;
        cout<<ans[akt]<<"\n";
    }
	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 81ms 80824 KiB
2 Elfogadva 354ms 104052 KiB
subtask2 20/20
3 Elfogadva 190ms 81524 KiB
4 Elfogadva 209ms 81556 KiB
5 Elfogadva 209ms 81564 KiB
6 Elfogadva 245ms 160456 KiB
7 Elfogadva 347ms 160488 KiB
8 Elfogadva 560ms 160524 KiB
9 Elfogadva 950ms 160592 KiB
10 Elfogadva 1.077s 160696 KiB
subtask3 10/10
11 Elfogadva 259ms 82500 KiB
12 Elfogadva 326ms 87604 KiB
13 Elfogadva 307ms 134692 KiB
14 Elfogadva 397ms 152092 KiB
15 Elfogadva 497ms 163944 KiB
16 Elfogadva 437ms 153412 KiB
17 Elfogadva 243ms 166808 KiB
subtask4 15/15
18 Elfogadva 192ms 165876 KiB
19 Elfogadva 209ms 165896 KiB
20 Elfogadva 158ms 167464 KiB
21 Elfogadva 347ms 166636 KiB
22 Elfogadva 317ms 168244 KiB
23 Elfogadva 360ms 156016 KiB
24 Elfogadva 368ms 144728 KiB
25 Elfogadva 432ms 156012 KiB
26 Elfogadva 453ms 167324 KiB
27 Elfogadva 982ms 168216 KiB
subtask5 55/55
28 Elfogadva 388ms 169972 KiB
29 Elfogadva 224ms 171532 KiB
30 Elfogadva 333ms 171536 KiB
31 Elfogadva 194ms 172244 KiB
32 Elfogadva 312ms 173088 KiB
33 Elfogadva 358ms 173776 KiB
34 Elfogadva 423ms 163216 KiB
35 Elfogadva 405ms 152708 KiB
36 Elfogadva 583ms 176360 KiB
37 Elfogadva 275ms 177396 KiB
38 Elfogadva 377ms 178816 KiB
39 Elfogadva 263ms 180728 KiB