Trang

Chủ Nhật, 2 tháng 1, 2011

1176. Recaman's Sequence

import java.io.*;
import java.util.*;

public class Main {

    /**
     * http://acm.tju.edu.cn/toj/showp1176.html
     * @author hunglee
     */
    public static void main(String[] args) throws IOException {
        
        StreamTokenizer in = new StreamTokenizer(new BufferedReader(
                new InputStreamReader(System.in)));
        
        boolean[] exist = new boolean[4000000];
        int[] a = new int[500005];
        
        int k, max = -1;
        ArrayList<Integer> arr = new ArrayList<Integer>();
        do {
            in.nextToken();
            k = (int) in.nval;
            if (k == -1) break;
            
            arr.add(k);
            if (max < k) max = k;
        } while (true);

        a[0] = 0;
        for (int m = 1; m <= max; ++m) {
            if (a[m-1] > m && !exist[a[m-1] - m])
                a[m] = a[m-1] - m;
            else
                a[m] = a[m-1] + m;
            exist[a[m]] = true;
        }
        
        for (Integer m : arr)
            System.out.println(a[m]);
    }

}

Không có nhận xét nào:

Đăng nhận xét