ARC 087
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 N; map<int, int> m; cin >> N; REP(i, N) { int j; cin >> j; m[j]++; } int ans = 0; for(auto k : m) { if (k.second >= k.first) { ans += k.second - k.first; } else { ans += k.second; } } cout << ans << endl; }
Submission #1874632 - AtCoder Regular Contest 087
D
#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 dx3[16010]; int dy3[16010]; int *dx = dx3+8005; int *dy = dy3+8005; int dx4[16010]; int dy4[16010]; int *dx2 = dx4+8005; int *dy2 = dy4+8005; int main(void) { string s; cin >> s; int gx, gy; cin >> gx >> gy; bool isX = true; int t = 0; vector<int> X, Y; for(int i=0; i<s.size(); ++i) { if(s[i] == 'F') t++; if(s[i] == 'T' || i==s.size()-1) { if(isX) { X.push_back(t); } else { Y.push_back(t); } t = 0; isX = !isX; } } dx[X[0]] = 1; for(int i=1; i<X.size(); ++i) { int mx = X[i]; if(i%2==1) { for(int j=-8000; j<=8000; ++j) { if(dx[j] == 1) { dx2[j+mx] = 1; dx2[j-mx] = 1; dx[j] = 0; } } } else { for(int j=-8000; j<=8000; ++j) { if(dx2[j] == 1) { dx[j+mx] = 1; dx[j-mx] = 1; dx2[j] = 0; } } } } if(Y.size() > 0) { dy[Y[0]] = 1; dy[-Y[0]] = 1; } else { dy2[0] = 1; } for(int i=1; i<Y.size(); ++i) { if(i%2==1) { for(int j=-8000; j<=8000; ++j) { if(dy[j] == 1) { dy2[j+Y[i]] = 1; dy2[j-Y[i]] = 1; dy[j] = 0; } } } else { for(int j=-8000; j<=8000; ++j) { if(dy2[j] == 1) { dy[j+Y[i]] = 1; dy[j-Y[i]] = 1; dy2[j] = 0; } } } } bool okX = false; if(X.size()%2 == 0) { if(dx2[gx] == 1) okX = true; } else { if(dx[gx] == 1) okX = true; } bool okY = false; if(Y.size()%2 == 0) { if(dy2[gy] == 1) okY = true; } else { if(dy[gy] == 1) okY = true; } if(okX && okY) cout << "Yes" << endl; else cout << "No" << endl; }