hntk03.com
Posts

AtCoder Beginner Contest 343 参加記録

2024/03/03

#競プロ

はじめに

AtCoder Beginner Contest 343)に参加した記録です。

久しぶりに緑パフォーマンスが出せて嬉しいです。

performance

A問題

A+Bを計算し、計算結果とは、違う数字を0~9の中で探し、出力しました。

A.cpp
int main(void){
int A, B; cin >> A >> B;
REP(i,10){
if(i != (A+B)){
cout << i << endl;
return 0;
}
}
return 0;
}

B問題

1が入力されたときのインデックスを出力するように実装しました。

B.cpp
int main(void){
int N; cin >> N;
REP(i,N){
REP(j,N){
int A; cin >> A;
if(A == 1) cout << j + 1 << ' ';
}
cout << endl;
}
return 0;
}

C問題

x*x*x <= Nを満たし、かつ回文となるようなxの最大値を求めました。

C.cpp
bool isOk(ll k){
string s = to_string(k);
REP(i,s.length()/1){
if(s[i] != s[s.length()-1-i]) return false;
}
return true;
}
int main(void){
ll N; cin >> N;
ll ans = 0;
for(ll x=0;(x*x*x)<=N;x++){
ll k = x*x*x;
if(isOk(k)) ans = max(ans, k);
}
cout << ans << endl;
return 0;
}

D問題

ある得点が何人いるかをmapで保持、ある人の現在の点数をvectorで用意し、 各タイミングでの得点の種類を出力しました。

D.cpp
int main(void){
int N, T; cin >> N >> T;
vector<ll> p(N+1);
map<ll, int> m;
m[0] = N;
REP(i,T){
int A, B; cin >> A >> B;
ll prev = p[A];
ll now = B + p[A];
p[A] = now;
m[prev]--;
m[now]++;
if(m[prev] == 0){
m.erase(prev);
}
cout << m.size() << endl;
}
return 0;
}
← Back to All Posts