답안 #254378

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
254378 2020-07-29T23:06:10 Z MarcoMeijer Lottery (CEOI18_lot) C++14
45 / 100
64 ms 1408 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 = 10000;
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) {
    auto lb = lower_bound(all(f[v]),i);
    auto ub = upper_bound(all(f[v]),n-l+1+i);
    while(lb != ub) {
        dist[*lb-i] += del;
        lb++;
    }
}
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) dist[i+1] = dist[i];
        addDist(a[x+l-1],l-1,-1);
        dist[0] = getDif(0,x);
    }

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

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 1 ms 640 KB Output is correct
5 Correct 1 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 2 ms 768 KB Output is correct
11 Correct 3 ms 672 KB Output is correct
12 Correct 2 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 1 ms 640 KB Output is correct
5 Correct 1 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 2 ms 768 KB Output is correct
11 Correct 3 ms 672 KB Output is correct
12 Correct 2 ms 768 KB Output is correct
13 Correct 64 ms 760 KB Output is correct
14 Correct 18 ms 1024 KB Output is correct
15 Correct 19 ms 896 KB Output is correct
16 Correct 38 ms 888 KB Output is correct
17 Correct 27 ms 896 KB Output is correct
18 Correct 28 ms 1016 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 3 ms 1408 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 3 ms 1408 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 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 1 ms 640 KB Output is correct
5 Correct 1 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 2 ms 768 KB Output is correct
11 Correct 3 ms 672 KB Output is correct
12 Correct 2 ms 768 KB Output is correct
13 Correct 64 ms 760 KB Output is correct
14 Correct 18 ms 1024 KB Output is correct
15 Correct 19 ms 896 KB Output is correct
16 Correct 38 ms 888 KB Output is correct
17 Correct 27 ms 896 KB Output is correct
18 Correct 28 ms 1016 KB Output is correct
19 Runtime error 3 ms 1408 KB Execution killed with signal 11 (could be triggered by violating memory limits)
20 Halted 0 ms 0 KB -