ABC 002

abc002.contest.atcoder.jp

A問題

#include <bits/stdc++.h>
 
#define REP(i,n) for(int i=0; i<(int)(n); ++i)
#define FOR(i,k,n) for(int i=(k);i<(int)(n);++i)
typedef long long int ll;
using namespace std;
 
int main(void) {
    int a, b;
    cin >> a >> b;
    cout << max(a, b) << endl;
}

Submission #1024114 - AtCoder Beginner Contest 002 | AtCoder

B問題

#include <bits/stdc++.h>
 
#define REP(i,n) for(int i=0; i<(int)(n); ++i)
#define FOR(i,k,n) for(int i=(k);i<(int)(n);++i)
typedef long long int ll;
using namespace std;
 
int main(void) {
    string W;
    cin >> W;
    REP(i, W.size()) {
        if(W[i] != 'a' && W[i] != 'i' && W[i] != 'u'
                       && W[i] != 'e' && W[i] != 'o') {
            cout << W[i];
        }
    }
    cout << endl;
}

Submission #1024115 - AtCoder Beginner Contest 002 | AtCoder

C問題

ヘロンの公式

#include <bits/stdc++.h>
 
#define REP(i,n) for(int i=0; i<(int)(n); ++i)
#define FOR(i,k,n) for(int i=(k);i<(int)(n);++i)
typedef long long int ll;
using namespace std;
 
int main(void) {
    int x[3], y[3];
    REP(i, 3) cin >> x[i] >> y[i];
    double a = sqrt(pow(x[0] - x[1], 2.0) + pow(y[0] - y[1], 2.0));
    double b = sqrt(pow(x[1] - x[2], 2.0) + pow(y[1] - y[2], 2.0));
    double c = sqrt(pow(x[2] - x[0], 2.0) + pow(y[2] - y[0], 2.0));
    double s = (a+b+c)/2.0;
 
    printf("%.3f\n", sqrt(s*(s-a)*(s-b)*(s-c)));
}

D問題

ビット全探索で最大クリークを求める。

bitsetとかいう便利ライブラリがあることを知った。

#include <bits/stdc++.h>
 
#define REP(i,n) for(int i=0; i<(int)(n); ++i)
#define FOR(i,k,n) for(int i=(k);i<(int)(n);++i)
typedef long long int ll;
using namespace std;

int main(void) {
    int N, M;
    cin >> N >> M;
    vector<vector<int> > e(N, vector<int>(N, 0));
    REP(i, M) {
        int x, y;
        cin >> x >> y;
        --x; --y;
        e[x][y] = e[y][x] = 1;
    }
    int ans = 0;
    for(int bit=1; bit<(1<<N); ++bit) {
        int t = bitset<12>(bit).count();
        if(t <= ans) continue;
 
        bool flag = true;
        REP(i, N) {
            REP(j, i) {
                if((bit >> i & bit >> j & 1) && e[i][j] != 1) {
                    flag = false;
                }
            }
        }
        if(flag) ans = t;
    }
    cout << ans << endl;
}

Submission #1024133 - AtCoder Beginner Contest 002 | AtCoder