##1 競プロの記録
競技プログラミングを始めてみたので、第三者目線から客観的に書いたコードを俯瞰できるようになんとなく書き始める。
勿論、書物は初めてなのでどうなるのかよくわからん。
今回のテストは、
キャディプログラミングコンテスト2021
自分はA問題しか解ききれなかった。
(競プロは知っていたものの、参加したのは今回が初めて)
まぁ、なにはともかく提出したコードだ。
#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (n); ++i)
#define df(x) int x = in();
#define pb push_back
#define eb emplace_back
#define sz(x) int(x.size())
int main(){
double a,b;
cin >>a >>b;
double num = a-b;
double ans = num / a * 100;
cout << ans <<endl;
return 0;
}
問題文を見ると、小数の桁が長かったからとりあえず
ans = num / a * 100;
の部分だけをdouble型にして、提出→WA。
あとは適当に、やっつけで他の型も全部double型にして提出した。
そしたらなんか通った。
後で、本家のYoutube解説見てみると、キャスト?しなければいけないらしい。
書き方は知らなかったが解答も乗せる。
int main(){
int a,b;
cin >>a >>b;
int num = a-b;
double ans = (double)num / a * 100;
cout << ans <<endl;
return 0;
}
はい。小休止。
次がB問題。
僕が書いたコードがこれ
#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (n); ++i)
#define df(x) int x = in();
#define pb push_back
#define eb emplace_back
#define sz(x) int(x.size())
int main(){
int n;
cin >>n;
rep(i,n) {
for(int j =0; j<n; j++){
cin >>map.at(i).at(j);
}
}
int now = 1001001001;
int next = 0;
int cnt = 0;
rep(i,n){
if (map[i][0] < map[i][2]){
next = map[i][1];
now = min(now, next);
}
else cnt++;
}
if (cnt != n) cout << now << endl;
else cout << -1 << endl;
return 0;
}
で、解答がこれ。
#include <iostream>
using namespace std;
const int INF = 0x3fffffff;
void chmin(int& a, int b){ if(a > b) a = b; }
int main(){
int N;
cin >> N;
int ans = INF;
for(int i = 0; i < N; i++){
int A, P, X;
cin >> A >> P >> X;
if(X > A) chmin(ans, P);
}
if(ans == INF) ans = -1;
cout << ans << endl;
}
すごいね。知らん情報ばっかだった。
頑張って二重配列の箱作ってその中に入れるもんだと思っていたら、そういうやり方で解くのが最適解なのか。。
他にもINFとやって最大値を入力するのも面白い。
僕の場合は適当に大きい数を代入しようとしてましたし笑。
毎週、自分の提出したコードを記録取るために続けます。
an