JOI 2015/2016予選に参加した話
こんにちは.kurokojiです.数日前にAdventCalendarの記事でもお話したように,結果が出てからJOIの話をするとのことでしたが,先日結果が出ました.
2完+3問目の部分点で220点になりました.
とても悔しい結果になってしまいました.
反省などを含め,書いたコードを晒そうと思います.
1問目
#include <cstdio> #include <iostream> #include <algorithm> #include <string> using namespace std; int main() { int pt[6]; int tmp_1[4], tmp_2[2]; int sum = 0; for (int i = 0; i < 6; i++){ scanf("%d", &pt[i]); } for (int i = 0; i < 4; i++){ tmp_1[i] = pt[i]; } for (int i = 4, j = 0; i < 6; i++, j++){ tmp_2[j] = pt[i]; } sort(tmp_1, tmp_1 + 4); sort(tmp_2, tmp_2 + 2); reverse(tmp_1, tmp_1 + 4); reverse(tmp_2, tmp_2 + 2); for (int i = 0; i < 3; i++){ sum += tmp_1[i]; } sum += tmp_2[0]; cout << sum << endl; return (0); }
あとから気づいたのですが,全部の合計から引いた方がよりコンパクトなコードになったと思います.
2問目
#include <cstdio> #include <iostream> #include <algorithm> using namespace std; int main() { int n, m; int st[101]; scanf("%d%d", &n, &m); for (int i = 0; i < n; i++){ scanf("%d", &st[i]); } for (int k = 1; k <= m; k++){ for (int i = 0; i < n - 1; i++){ if (st[i] % k > st[i + 1] % k){ swap(st[i], st[i + 1]); } } } for (int i = 0; i < n; i++){ cout << st[i] << endl; } return (0); }
これは書いてあることそのままやれば良かったので簡単でした.これにはあまり言うことは無いでしょう.
3問目
#include <cstdio> using namespace std; int main() { printf("88\n"); return (0); }
解けなくて辛かった.部分点だけ狙いにいきました.1つ目のinputは人力で出来たので,その結果をただ単に書いて出しました.
感想
3問目の解法を思いつかなかったのが悔しい.とにかく,AOJとか解きまくって覚えるしかないのかな...
もっと努力しないといけないのが身に染みて分かりました.
また1年生で予選を突破出来た人はいません.久留米は突破してる人いるし僕たち相当差を付けられてるのでは?
来年は行きます.