結果
| 問題 |
No.161 制限ジャンケン
|
| コンテスト | |
| ユーザー |
threepipes_s
|
| 提出日時 | 2015-03-05 23:39:15 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 59 ms / 5,000 ms |
| コード長 | 3,434 bytes |
| コンパイル時間 | 3,374 ms |
| コンパイル使用メモリ | 79,696 KB |
| 実行使用メモリ | 50,328 KB |
| 最終ジャッジ日時 | 2024-11-30 04:25:26 |
| 合計ジャッジ時間 | 4,521 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 16 |
ソースコード
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.PriorityQueue;
import java.util.Queue;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException{
ContestScanner in = new ContestScanner();
int[] me = new int[3];
me[0] = in.nextInt();
me[1] = in.nextInt();
me[2] = in.nextInt();
char[] s = in.nextToken().toCharArray();
int max = Math.min(s.length, me[0]+me[1]+me[2]);
int[] te = new int[3];
for(int i=0; i<max; i++){
switch(s[i]){
case 'G':
te[0]++;
break;
case 'C':
te[1]++;
break;
case 'P':
te[2]++;
break;
}
}
int point = 0;
for(int i=0; i<3; i++){
if(me[i] >= te[(i+1)%3]){
int dif = me[i]-te[(i+1)%3];
me[i] -= te[(i+1)%3];
point += te[(i+1)%3]*3;
te[(i+1)%3] = 0;
}else{
int dif = te[(i+1)%3] - me[i];
te[(i+1)%3] -= me[i];
point += me[i]*3;
me[i] = 0;
}
}
for(int i=0; i<3; i++){
if(me[i] >= te[i]){
int dif = me[i]-te[i];
me[i] -= te[i];
point += te[i];
te[i] = 0;
}else{
int dif = te[i] - me[i];
te[i] -= me[i];
point += me[i];
me[0] = 0;
}
}
System.out.println(point);
}
}
class MyComp implements Comparator<int[]>{
public int compare(int[] a, int[] b) {
return a[0] - b[0];
}
}
class Reverse implements Comparator<Integer>{
public int compare(Integer arg0, Integer arg1) {
return arg1 - arg0;
}
}
class Node implements Comparable<Node>{
int id;
List<Node> edge = new ArrayList<Node>();
// List<Integer> cost = new ArrayList<Integer>();
int sum;
public Node(int id){
this.id = id;
sum = 100000000;
}
public void createEdge(Node node){
edge.add(node);
// cost.add(c);
}
@Override
public int compareTo(Node o) {
// TODO 自動生成されたメソッド・スタブ
return sum - o.sum;
}
}
class ContestWriter{
private PrintWriter out;
public ContestWriter(String filename) throws IOException{
out = new PrintWriter(new BufferedWriter(new FileWriter(filename)));
}
public ContestWriter() throws IOException{
out = new PrintWriter(System.out);
}
public void println(String str){
out.println(str);
}
public void print(String str){
out.print(str);
}
public void close(){
out.close();
}
}
class ContestScanner{
private BufferedReader reader;
private String[] line;
private int idx;
public ContestScanner() throws FileNotFoundException{
reader = new BufferedReader(new InputStreamReader(System.in));
}
public ContestScanner(String filename) throws FileNotFoundException{
reader = new BufferedReader(new InputStreamReader(new FileInputStream(filename)));
}
public String nextToken() throws IOException{
if(line == null || line.length <= idx){
line = reader.readLine().trim().split(" ");
idx = 0;
}
return line[idx++];
}
public long nextLong() throws IOException, NumberFormatException{
return Long.parseLong(nextToken());
}
public int nextInt() throws NumberFormatException, IOException{
return (int)nextLong();
}
public double nextDouble() throws NumberFormatException, IOException{
return Double.parseDouble(nextToken());
}
}
threepipes_s