昨日のやけくそ精進
0118
#include <iostream> #include <vector> using namespace std; typedef vector<string> vs; int dx[] = {0,0,1,-1}; int dy[] = {-1,1,0,0}; int H, W; vs dfs(vs map, int ny, int nx, char now) { map[ny][nx] = '-'; for (int i=0; i<4; i++) { if (ny+dy[i]>=0&&ny+dy[i]<H&& nx+dx[i]>=0&&nx+dx[i]<W&&map[ny+dy[i]][nx+dx[i]]==now) { map = dfs(map, ny+dy[i], nx+dx[i], now); } } return map; } int main() { while (cin>>H>>W) { if (H==0&&W==0) break; vs map(H); for (int i=0; i<H; i++) cin>>map[i]; int res = 0; for (int i=0; i<H; i++) { for (int j=0; j<W; j++) { if (map[i][j]!='-') { map = dfs(map, i, j, map[i][j]); res++; } } } cout<<res<<endl; } }
0100
#include <cstdio> #include <vector> #include <algorithm> #include <map> using namespace std; int main() { int n; while (scanf("%d",&n)&&n!=0) { map<int, long long> sales; vector<int> log; long long prc, mnt; int num; for (int i=0; i<n; i++) { scanf("%d%lld%lld",&num,&prc,&mnt); if (!sales[num]) { log.push_back(num); } sales[num] += prc * mnt; } bool flag = true; for (int i=0; i<log.size(); i++) { if (sales[log[i]]>=1000000) { flag = false; printf("%d\n", log[i]); } } if (flag) printf("NA\n"); } }
0112
#include <cstdio> #include <vector> #include <algorithm> using namespace std; int main() { int n; while (scanf("%d",&n)&&n!=0) { vector<int> cast(n); for (int i=0; i<n; i++) scanf("%d",&cast[i]); sort(cast.begin(), cast.end()); long long res = 0; long long mati = 0; for (int i=0; i<n; i++) { res += mati; mati += cast[i]; } printf("%lld\n", res); } }
0108
#include <cstdio> #include <vector> #include <map> using namespace std; typedef vector<int> vi; vi C; bool compare(vi S, vi C) { for (int i=0; i<S.size(); i++) { if (S[i] != C[i]) return false; } return true; } int solve(vi S, int cnt) { C = vi(S.size()); map<int, int> ma; for (int i=0; i<S.size(); i++) { if (ma.empty() || ma.find(S[i])==ma.end()) { ma[S[i]] = 1; } else { ma[S[i]]++; } } for (int i=0; i<S.size(); i++) { C[i] = ma[S[i]]; } if (compare(S, C)) { return cnt; } return solve(C, cnt+1); } int main() { int n; while (scanf("%d",&n)&&n!=0) { vi S(n); for (int i=0; i<n; i++) scanf("%d",&S[i]); int res = solve(S, 0); printf("%d\n", res); for (int i=0; i<C.size()-1; i++) printf("%d ",C[i]); printf("%d\n", C[C.size()-1]); } }
アルゴリズム〜〜〜〜〜〜