結果
| 問題 |
No.145 yukiover
|
| コンテスト | |
| ユーザー |
threepipes_s
|
| 提出日時 | 2015-02-06 00:45:59 |
| 言語 | Java (openjdk 23) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 4,089 bytes |
| コンパイル時間 | 6,148 ms |
| コンパイル使用メモリ | 78,748 KB |
| 実行使用メモリ | 51,340 KB |
| 最終ジャッジ日時 | 2024-06-23 09:19:13 |
| 合計ジャッジ時間 | 4,632 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 15 WA * 5 |
ソースコード
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.PriorityQueue;
public class Main {
public static int[] dp;
public static void main(String[] args) throws NumberFormatException, IOException{
ContestScanner in = new ContestScanner();
int n = in.nextInt();
String s = in.nextToken();
int[] alp = new int[26];
for(int i=0; i<n; i++){
alp[s.charAt(i)-'a']++;
}
int resY = 0;
int count = alp[25];
if(alp[24] <= alp[23]+alp[22]+alp[21]){
count += alp[24];
System.out.println(count);
return;
}
count += (alp[23]+alp[22]+alp[21]);
alp[24] -= alp[23]+alp[22]+alp[21];
if(alp[20] == 0){
System.out.println(count);
return;
}
int max = Math.min(alp[24], alp[20]);
if(alp[24]>=alp[20]){
alp[24] -= alp[20];
resY = alp[24];
alp[20] = 0;
}else{
alp[20] -= alp[24];
alp[24] = 0;
}
int num = 0;
for(int i=11; i<=20; i++){
num += alp[i];
}
if(max <= num){
System.out.println(count+num);
return;
}
count += num;
max -= num;
num = 0;
max = Math.min(alp[10], max);
if(max>=alp[10]){
resY += max - alp[10];
alp[10] = 0;
}else{
alp[10] -= max;
}
num += alp[9]+alp[10];
if(max <= num){
System.out.println(count+num);
return;
}
count += num;
max -= num;
max = Math.min(alp[8], max);
if(max>=alp[8]){
resY += max - alp[8];
alp[8] = 0;
}else{
alp[8] -= max;
}
num = 0;
for(int i=0; i<=8; i++){
num += alp[i];
}
count += Math.min(max, num);
if(max > num){
max -= num;
resY += max;
}
System.out.println(count+resY/2);
}
}
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{
int id;
List<Node> edge = new ArrayList<Node>();
public Node(int id){
this.id = id;
}
public void createEdge(Node node){
edge.add(node);
}
}
class MyMath{
public final static double PIhalf = Math.PI/2.0;
public static double pAngle(double x, double y){
// ベクトル(1, 0)と(x, y)とのなす角を返す(rad:0 to 2pi)
if(x == 0){
if(y == 0){
System.err.println("pAngle error: zero vector.");
return 0;
}else if(y < 0){
return PIhalf*3.0;
}else{
return PIhalf;
}
}
double rad = Math.atan(y/x);
if(rad < 0){
rad += Math.PI*2.0;
}
return rad;
}
public static long fact(long n){
long res = 1;
while(n > 0){
res *= n--;
}
return res;
}
public static long[][] pascalT(int n){
long[][] tri = new long[n][];
for(int i=0; i<n; i++){
tri[i] = new long[i+1];
for(int j=0; j<i+1; j++){
if(j == 0 || j == i){
tri[i][j] = 1;
}else{
tri[i][j] = tri[i-1][j-1] + tri[i-1][j];
}
}
}
return tri;
}
// 最大公約数
static int gcd(int a, int b){
return b == 0 ? a : gcd(b, a % b);
}
// 最小公倍数
static int lcm(int a, int b){
return a * b / gcd(a, b);
}
}
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