Cod sursa(job #1886698)

Utilizator antanaAntonia Boca antana Data 21 februarie 2017 08:37:08
Problema Cc Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <cstdio>
#include <vector>
#include <cstring>
#include <algorithm>

#define MAXN 100001
#define MAXV 1025

#define INF 0x3f3f3f3f

using namespace std;

int v[MAXV], rev[MAXV];

int main()
{
    freopen("input", "r", stdin);
    freopen("output", "w", stdout);

    int i, op, s = 0, n, aux, k, x, val, idx, ans = -INF, mini = INF;

    scanf("%d%d%d", &n, &k, &x);

    for(i=1; i<=n; ++i) {
        scanf("%d", &val);
        v[val]++;
    }

    for(op=1; op<=k; ++op) {
        s = 0;
        idx = 1;
        for(i=0; i<MAXV; ++i)
        {
            rev[i] += v[i];
            if(s < idx && s+v[i] >= idx)
            {
                aux = x ^ i;
                rev[i]--;
                rev[aux]++;
                idx += x;
            }
            s += v[i];
        }
        memcpy(v, rev, sizeof rev);
    }

    for(i=0; i<MAXV; ++i)
        if(v[i])
            ans = max(ans, i), mini = min(mini, i);

    printf("%d %d", ans, mini);
    return  0;
}