답안 #254385

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
254385 2020-07-29T23:20:20 Z MarcoMeijer Lottery (CEOI18_lot) C++14
80 / 100
3000 ms 1464 KB
#include <bits/stdc++.h>
using namespace std;

// macros
typedef long long ll;
typedef long double ld;
typedef pair<int, int> ii;
typedef pair<ll, ll> lll;
typedef tuple<int, int, int> iii;
typedef vector<int> vi;
typedef vector<ii> vii;
typedef vector<iii> viii;
typedef vector<ll> vll;
typedef vector<lll> vlll;
#define REP(a,b,c) for(int a=int(b); a<int(c); a++)
#define RE(a,c) REP(a,0,c)
#define RE1(a,c) REP(a,1,c+1)
#define REI(a,b,c) REP(a,b,c+1)
#define REV(a,b,c) for(int a=int(c-1); a>=int(b); a--)
#define FOR(a,b) for(auto& a : b)
#define all(a) a.begin(), a.end()
#define INF 1e9
#define EPS 1e-9
#define pb push_back
#define popb pop_back
#define fi first
#define se second
#define sz size()

// input
template<class T> void IN(T& x) {cin >> x;}
template<class H, class... T> void IN(H& h, T&... t) {IN(h); IN(t...); }

// output
template<class T1, class T2> void OUT(const pair<T1,T2>& x);
template<class T> void OUT(const T& x) {cout << x;}
template<class H, class... T> void OUT(const H& h, const T&... t) {OUT(h); OUT(t...); }
template<class T1, class T2> void OUT(const pair<T1,T2>& x) {OUT(x.fi," ",x.se);}
template<class... T> void OUTL(const T&... t) {OUT(t..., "\n"); }

//===================//
//  Added libraries  //
//===================//

//===================//
//end added libraries//
//===================//

void program();
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    program();
}


//===================//
//   begin program   //
//===================//

const int MX = 10002;
int n, m, l, q;
int a[MX], b[MX], k[MX];
vi f[MX];
int dist[MX], sdist[MX];
int ans[100][MX];

int getDif(int x, int y) {
    int ans=0;
    RE(i,l) if(a[x+i] != a[y+i]) ans++;
    return ans;
}
void addDist(int v, int i, int del) {
    FOR(u,f[v]) {
        int v=u-i;
        if(v<0) continue;
        if(v>n-l+1) break;
        dist[v] += del;
    }
}
void getDif(int x) {
    // fill dist table
    if(x == 0) {
        RE(i,n) dist[i] = l;
        RE(i,l) {
            addDist(a[x+i],i,-1);
        }
    } else {
        addDist(a[x-1],0,1);
        REV(i,0,n-l+1) dist[i+1] = dist[i];
        addDist(a[x+l-1],l-1,-1);
        dist[0] = getDif(0,x);
    }

    // answer queries
    RE(i,q) {
        ans[i][x] = -1;
        RE(j,n-l+1) if(dist[j] <= k[i]) ans[i][x]++;
    }
}

void program() {
    IN(n, l);
    RE(i,n) IN(a[i]);
    IN(q);
    RE(i,q) IN(k[i]);

    RE(i,n) b[i]=a[i];
    sort(b,b+n);
    m = unique(b,b+n)-b;
    RE(i,n) a[i] = lower_bound(b,b+m,a[i])-b;
    RE(i,n) f[a[i]].pb(i);

    RE(i,n-l+1) getDif(i);
    OUTL();

    RE(i,q) {
        RE(j,n-l+1) OUT(j==0?"":" ",ans[i][j]);
        OUTL();
    }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 640 KB Output is correct
2 Correct 1 ms 640 KB Output is correct
3 Correct 1 ms 640 KB Output is correct
4 Correct 0 ms 640 KB Output is correct
5 Correct 0 ms 640 KB Output is correct
6 Correct 1 ms 640 KB Output is correct
7 Correct 1 ms 640 KB Output is correct
8 Correct 2 ms 640 KB Output is correct
9 Correct 1 ms 640 KB Output is correct
10 Correct 3 ms 768 KB Output is correct
11 Correct 5 ms 768 KB Output is correct
12 Correct 3 ms 768 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 640 KB Output is correct
2 Correct 1 ms 640 KB Output is correct
3 Correct 1 ms 640 KB Output is correct
4 Correct 0 ms 640 KB Output is correct
5 Correct 0 ms 640 KB Output is correct
6 Correct 1 ms 640 KB Output is correct
7 Correct 1 ms 640 KB Output is correct
8 Correct 2 ms 640 KB Output is correct
9 Correct 1 ms 640 KB Output is correct
10 Correct 3 ms 768 KB Output is correct
11 Correct 5 ms 768 KB Output is correct
12 Correct 3 ms 768 KB Output is correct
13 Correct 47 ms 712 KB Output is correct
14 Correct 49 ms 888 KB Output is correct
15 Correct 43 ms 768 KB Output is correct
16 Correct 68 ms 888 KB Output is correct
17 Correct 69 ms 888 KB Output is correct
18 Correct 54 ms 888 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 614 ms 888 KB Output is correct
2 Correct 525 ms 1020 KB Output is correct
3 Correct 242 ms 888 KB Output is correct
4 Correct 172 ms 900 KB Output is correct
5 Correct 218 ms 896 KB Output is correct
6 Correct 150 ms 888 KB Output is correct
7 Correct 403 ms 1016 KB Output is correct
8 Correct 615 ms 896 KB Output is correct
9 Correct 205 ms 1016 KB Output is correct
10 Correct 190 ms 888 KB Output is correct
11 Correct 26 ms 640 KB Output is correct
12 Correct 169 ms 896 KB Output is correct
13 Correct 135 ms 768 KB Output is correct
14 Correct 185 ms 888 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 614 ms 888 KB Output is correct
2 Correct 525 ms 1020 KB Output is correct
3 Correct 242 ms 888 KB Output is correct
4 Correct 172 ms 900 KB Output is correct
5 Correct 218 ms 896 KB Output is correct
6 Correct 150 ms 888 KB Output is correct
7 Correct 403 ms 1016 KB Output is correct
8 Correct 615 ms 896 KB Output is correct
9 Correct 205 ms 1016 KB Output is correct
10 Correct 190 ms 888 KB Output is correct
11 Correct 26 ms 640 KB Output is correct
12 Correct 169 ms 896 KB Output is correct
13 Correct 135 ms 768 KB Output is correct
14 Correct 185 ms 888 KB Output is correct
15 Correct 560 ms 960 KB Output is correct
16 Correct 165 ms 1016 KB Output is correct
17 Correct 235 ms 1016 KB Output is correct
18 Correct 168 ms 1016 KB Output is correct
19 Correct 171 ms 1016 KB Output is correct
20 Correct 155 ms 896 KB Output is correct
21 Correct 160 ms 896 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 640 KB Output is correct
2 Correct 1 ms 640 KB Output is correct
3 Correct 1 ms 640 KB Output is correct
4 Correct 0 ms 640 KB Output is correct
5 Correct 0 ms 640 KB Output is correct
6 Correct 1 ms 640 KB Output is correct
7 Correct 1 ms 640 KB Output is correct
8 Correct 2 ms 640 KB Output is correct
9 Correct 1 ms 640 KB Output is correct
10 Correct 3 ms 768 KB Output is correct
11 Correct 5 ms 768 KB Output is correct
12 Correct 3 ms 768 KB Output is correct
13 Correct 47 ms 712 KB Output is correct
14 Correct 49 ms 888 KB Output is correct
15 Correct 43 ms 768 KB Output is correct
16 Correct 68 ms 888 KB Output is correct
17 Correct 69 ms 888 KB Output is correct
18 Correct 54 ms 888 KB Output is correct
19 Correct 614 ms 888 KB Output is correct
20 Correct 525 ms 1020 KB Output is correct
21 Correct 242 ms 888 KB Output is correct
22 Correct 172 ms 900 KB Output is correct
23 Correct 218 ms 896 KB Output is correct
24 Correct 150 ms 888 KB Output is correct
25 Correct 403 ms 1016 KB Output is correct
26 Correct 615 ms 896 KB Output is correct
27 Correct 205 ms 1016 KB Output is correct
28 Correct 190 ms 888 KB Output is correct
29 Correct 26 ms 640 KB Output is correct
30 Correct 169 ms 896 KB Output is correct
31 Correct 135 ms 768 KB Output is correct
32 Correct 185 ms 888 KB Output is correct
33 Correct 560 ms 960 KB Output is correct
34 Correct 165 ms 1016 KB Output is correct
35 Correct 235 ms 1016 KB Output is correct
36 Correct 168 ms 1016 KB Output is correct
37 Correct 171 ms 1016 KB Output is correct
38 Correct 155 ms 896 KB Output is correct
39 Correct 160 ms 896 KB Output is correct
40 Execution timed out 3073 ms 1464 KB Time limit exceeded
41 Halted 0 ms 0 KB -