ABC 005
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 x, y; cin >> x >> y; cout << y / x << endl; }
Submission #1024248 - AtCoder Beginner Contest 005 | 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) { int N; cin >> N; vector<int> T(N); REP(i, N) cin >> T[i]; sort(T.begin(), T.end()); cout << T[0] << endl; }
Submission #1024251 - AtCoder Beginner Contest 005 | 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 T, N, M; cin >> T >> N; vector<int> A(N); REP(i, N) cin >> A[i]; cin >> M; vector<int> B(M); REP(i, M) cin >> B[i]; bool ok = true; if(M > N) ok = false; int idx = 0; REP(i, M) { bool serve = false; while(idx < N && A[idx] < B[i] - T) idx++; if(A[idx] >= B[i] - T && A[idx] <= B[i]) { idx++; } else { ok = false; } } cout << (ok ? "yes" : "no") << endl; }
Submission #1024261 - AtCoder Beginner Contest 005 | AtCoder
D問題
- 左上
(0, 0)
右下(i, j)
の長方形のおいしさの和をacc[i][j]
に入れる。 (x, y, w, h)
を指定したらその長方形のおいしさの和を返す関数がarea
。- 全ての高さ・幅の長方形に対して最大のおいしさを求める。
- 各たこ焼き数以下で達成できる最大のおいしさを求める。
- 以上の準備をすれば、各店員の焼けるたこ焼き数に対する最大のおいしさがで求まる。
#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 D[55][55]; int acc[55][55]; int P[2501]; int memo[2501]; int area(int x, int y, int w, int h) { return acc[x+w][y+h] - acc[x+w][y] - acc[x][y+h] + acc[x][y]; } int main(void) { int N, Q; cin >> N; REP(i, N) REP(j, N) cin >> D[i][j]; cin >> Q; REP(i, Q) cin >> P[i]; REP(j, N+1) acc[0][j] = 0; FOR(i, 1, N+1) { int row = 0; acc[i][0] = 0; FOR(j, 1, N+1) { row += D[i-1][j-1]; acc[i][j] = acc[i-1][j] + row; } } REP(i, 2501) memo[i] = 0; REP(w, N+1) { REP(h, N+1) { REP(x, N-w+1) { REP(y, N-h+1) { memo[w*h] = max(memo[w*h], area(x, y, w, h)); } } } } FOR(i, 1, 2501) memo[i] = max(memo[i], memo[i-1]); REP(i, Q) cout << memo[P[i]] << endl; }
Submission #1025052 - AtCoder Beginner Contest 005 | AtCoder