そーすにっき

なんかいろいろのせておくばしょ

CODE THANKS FESTIVAL

略してCTF(違)

結果:96th/99

AC:A,B,D

これはひどいという有様

A:一発目からCEをかます
原因:10分前あたりからのんびり打ってた上側のテンプレのstruct edge{...};のセミコロンが落ちてた
C/C++初心者かよぉ…とだいぶひどいため息をつく

B:なんか色々考えたけど最初に思いついたのは単にひっくり返してくっつければよいではないかと
ここでテンプレにstring.hが入っていないことに気づきAのCEも合わせて余計に焦る

C:最悪だった
冒頭でpriority_queueで行けるのでは?(これが正解)
が、priority_queueの更新コストをO(size)と勘違いする痛恨のアホをかましあろうことか選択肢から消してしまう
結果WAを叩きまくり、AC出来ず

D:5WA叩きながらもAC
すぐに互いに素な整数の余算の値の周期性からGCDと思いついたがそこからミスが多かった

E以降は読んでも全然ちんぷんかんぷんだったのでア

#include <vector>
#include <deque>
#include <iostream>
#include <cstdio>
#include <set>
#include <map>
#include <utility>
#include <iomanip>
#include <algorithm>
#include <limits>
#include <random>
#include <string>

using namespace std;
using i64 = long long int;
using ui64 = unsigned long long int;
using f64 = double;
using f80 = long double;
using EDGES = vector<int>;
using GRAPH = vector<EDGES>;
 
struct edge{
    int f,t,c;
    bool operator<(const edge &e){
        return c < e.c;
    }
};
 
 
/////////////////////////////////
//a
int main(){
    int res = 0;
    int a;
    for(int i=0;i<8;i++){
        cin >> a;
        res = max(res,a);
    }
    cout << res << endl;
    return 0;
}

//b
bool is_ok(string s){
    for(int i=0,j=s.length()-1;i<j;i++,j--){
        if(s[i]!=s[j])return false;
    }return true;
}
 
int main(){
    string s;
    cin >> s;
    string t = s;
    reverse(t.begin(),t.end());
    int res = t.size()-1;
    for(int i=0;i<=t.size();i++){
        if(is_ok(s+t.substr(i,t.size()-i)))
        res = min((int)t.length()-i,res);
    }
    cout << res << endl;
    return 0;
}

//d
i64 f(i64 n,i64 k){
    i64 t;
    while(k){
        t = k;
        k = n%k;
        n = t;
    }
    return n;
}
 
int main(){
    i64 n,k;
    cin >> n >> k;
    // cout << f(n,k) << endl;
    if(n%k)cout << k-f(n,k) << endl;
    else cout << 0 << endl;
    return 0;
}