🔵
【ABC431】AtCoder Beginner Contest 431【C++】
コンテスト名
トヨタシステムズプログラミングコンテスト2025(AtCoder Beginner Contest 431)
コンテストURL
開催日
2025/11/08 21:00–22:40
A: Robot Balance
解法
- 問題文通りに判定する
ABC431A.cpp
#include <iostream>
using namespace std;
int main(){
int h, b;
cin >> h >> b;
if(h>b){
cout << h - b << endl;
}else{
cout << 0 << endl;
}
return 0;
}
B: Robot Weight
解法
- 問題文通りにシミュレーションする
ABC431B.cpp
#include <iostream>
#include <vector>
using namespace std;
int main(){
int x, n;
cin >> x >> n;
vector<int> W(n);
for(int i=0; i<n; i++){
cin >> W[i];
}
int q;
cin >> q;
vector<int> P(n);
int p;
int sum = x;
for(int i=0; i<q; i++){
cin >> p;
p--;
if(P[p]==0){
P[p] = 1;
sum += W[p];
}else if(P[p]==1){
P[p] = 0;
sum -= W[p];
}
cout << sum << '\n';
}
return 0;
}
C: Robot Factory
解法
- 頭パーツの軽いほうから
個、体パーツの重いほうからK 個を選び、それぞれを軽い順に組み合わせて判定するK
ABC431C.cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
int n, m, k;
cin >> n >> m >> k;
vector<int> H(n), B(m);
for(int i=0; i<n; i++){
cin >> H[i];
}
for(int i=0; i<m; i++){
cin >> B[i];
}
sort(H.begin(), H.end());
sort(B.begin(), B.end());
bool flag = true;
for(int i=0; i<k; i++){
if(H[i]>B[m-k+i]){
flag = false;
break;
}
}
if(flag){
cout << "Yes" << endl;
}else{
cout << "No" << endl;
}
return 0;
}
Discussion