AtCoder ABC 031 A&B&C AtCoder - 031
private void solveA() {
int a = nextInt();
int d = nextInt();
int res = 0;
if (a > d) {
res = a * (d + 1);
} else {
res = d * (a + 1);
}
out.println(res);
}
private void solveB() {
int numL = nextInt();
int numH = nextInt();
int numN = nextInt();
int[] wk = IntStream.range(0, numN).map(i -> nextInt()).toArray();
for (int i : wk) {
if (i < numL) {
out.println(numL - i);
} else if (numH < i) {
out.println(-1);
} else {
out.println(0);
}
}
}
--Rond Il a fallu plus d'une heure pour rendre la phrase problématique significative en raison du problème de la capacité de lecture, mais ... ――Je l'ai mis en œuvre avec la politique suivante, est-ce que ça va?
Je ne suis pas sûr de pouvoir obtenir à nouveau la même réponse. .. ..
private void solveC() {
int numN = nextInt();
int[] wk = IntStream.range(0, numN).map(i -> nextInt()).toArray();
int res = Integer.MIN_VALUE;
/*
*Arrondissez là où Takahashi choisit
*La main d'Aoki est décidée en fonction de l'endroit choisi par Takahashi
*Devrait être. .. ..
* i=Le lieu de sélection de Takahashi
*/
for (int i = 0; i < numN; i++) {
/*
* Integer.MIN_Lorsque je l'ai défini sur VALUE, la valeur était bouclée sur le côté MAX, donc ...
*Points de Takahashi et Aoki lorsque Takahashi sélectionne cette position
*/
int aokiPoint = -1000000;
int takahashiPoint = 0;
/*
*Avec la position sélectionnée de Takahashi fixée
*Trouvez un endroit pour choisir Aoki
*Cet endroit de sélection est l'endroit où le point d'Aoki est maximal
* i==Quand c'est j, il ne peut pas être sélectionné car il couvre Takahashi et sa main.
*Le point de Takahashi est l'endroit où le point d'Aoki est le plus grand
*
*/
for (int j = 0; j < numN; j++) {
if (i == j) {
continue;
}
int innerAoki = -100000;
int innerTakahashi = 0;
/*
*Le plus petit commence à la position choisie d'Aoki ou de Takahashi
*La position de sélection la plus large d'Aoki ou de Takahashi se termine
*Puisque les deux extrémités sont incluses, la fin est<=
*/
int cnt = 1;
for (int k = Integer.min(i, j); k <= Integer.max(i, j); k++) {
/*
*Odd est le point de Takahashi
*C'est même le point d'Aoki
*/
if ((cnt & 1) == 1) {
innerTakahashi += wk[k];
} else {
innerAoki += wk[k];
}
cnt++;
}
/*
*Le point d'Aoki lorsque cette position est sélectionnée est
*S'il est plus grand que le point d'Aoki jusqu'à présent
*S'il est grand, le point de Takahashi est confirmé avec ceci
*/
if (innerAoki > aokiPoint) {
//S'il est plus grand que le point d'Aoki jusqu'à présent, remplacez-le
aokiPoint = innerAoki;
//Les points d'Aoki sont plus gros qu'avant, donc les points de Takahashi sont également remplacés
takahashiPoint = innerTakahashi;
}
}
/*
*Le choix de ce Takahashi est-il ou non supérieur aux points précédents
*/
res = Integer.max(res, takahashiPoint);
}
out.println(res);
}
Recommended Posts