Cod sursa(job #1791969)

Utilizator MiricaMateiMirica Matei MiricaMatei Data 29 octombrie 2016 21:31:52
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <cstdio>
using namespace std;
const int NMAX = 250000;
const int LOG = 18;
int rmq[LOG + 5][NMAX + 5];
int main(){
    freopen("stramosi.in","r",stdin);
    freopen("stramosi.out","w",stdout);
    int n, m, i, j, p, q;
    scanf("%d%d", &n, &m);
    for(i = 1; i <= n; i ++)
        scanf("%d", &rmq[0][i]);
    for(j = 1; j <= 18; j ++)
        for(i = 1; i <= n; i ++)
            rmq[j][i] = rmq[j - 1][rmq[j - 1][i]];
    for(i = 1; i <= m; i ++){
        scanf("%d%d", &q, &p);
        for(j = 18; j >= 0; j --)
            if(p & (1 << j))
                q = rmq[j][q];
        printf("%d\n", q);
    }
    return 0;
}