Created
December 19, 2010 21:56
-
-
Save koduki/747728 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package problem1978; | |
import java.io.InputStream; | |
import java.util.ArrayList; | |
import java.util.LinkedList; | |
import java.util.List; | |
import java.util.Scanner; | |
public class Main { | |
private static final int HEAD = 1; | |
/** | |
* 花札を1回切る. | |
* | |
* @param cards | |
* @param p | |
* @param c | |
* @return 切った後の花札を新規作成して返す. | |
*/ | |
List<Integer> cut(List<Integer> cards, int p, int c) { | |
List<Integer> list = new LinkedList<Integer>(); | |
list.addAll(cards); | |
int cHead = (p - 1) + c; | |
for (int i = 0; i < c; i++) { | |
list.add(HEAD, list.remove(cHead)); | |
} | |
return list; | |
} | |
/** | |
* 入力された内容を元に、r回カットする. | |
* @param sc | |
* @param n | |
* @param r | |
* @return 切った後の花札. | |
*/ | |
List<Integer> cuts(Scanner sc, int n, int r) { | |
List<Integer> cards = rangeList(n); | |
for (int i = 0; i < r; i++) { | |
int p = sc.nextInt(); | |
int c = sc.nextInt(); | |
cards = cut(cards, p, c); | |
} | |
return cards; | |
} | |
/** | |
* 問題を解く. | |
* @param in 問題. | |
* @return 回答. | |
*/ | |
public List<Integer> solve(InputStream in) { | |
Scanner sc = new Scanner(in); | |
List<Integer> result = new ArrayList<Integer>(); | |
while (true) { | |
int n = sc.nextInt(); | |
int r = sc.nextInt(); | |
if (n == 0 && r == 0) { break; } | |
List<Integer> cards = cuts(sc, n, r); | |
result.add(cards.get(HEAD)); | |
} | |
return result; | |
} | |
/** | |
* 指定の長さのlistを作成. | |
* @param n 作成する要素数. | |
* @return 長さnのList. | |
*/ | |
private List<Integer> rangeList(int n) { | |
List<Integer> list = new LinkedList<Integer>(); | |
list.add(0); | |
for (int i = 1; i <= n; i++) { | |
list.add(HEAD, i); | |
} | |
return list; | |
} | |
public static void main(String[] args) { | |
Main main = new Main(); | |
List<Integer> results = main.solve(System.in); | |
for(int result : results) System.out.println(result); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment