日々精進

aikoと旅行とプログラミング

AtCoder Beginner Contest #63

問題はこちらからどうぞ.

abc063.contest.atcoder.jp

問題A: Restricted

#include <iostream>

using namespace std;

int main(){
  int a, b;
  cin >> a >> b;
  if(10 <= a + b) cout << "error" << endl;
  else cout << a + b << endl;
}

問題B: Varied

#include<bits/stdc++.h>

#define rep(i, n) REP(i, 0, n)
#define REP(i, a, n) for(int i = a ; i < (int)n ; i++)

using namespace std;

signed main(){
  string s;
  cin >> s;
  set<char> st;
  rep(i, s.size()){
    st.insert(s[i]);
  }
  if((int)s.size() == (int)st.size()) cout << "yes" << endl;
  else cout << "no" << endl;

}

問題C: Bugged

#include<iostream>
#include<vector>
#include<algorithm>

#define rep(i, n) REP(i, 0, n)
#define REP(i, a, n) for(int i = a ; i < (int)n ; i++)
#define pb push_back

using namespace std;

signed main(){
  int n;
  cin >> n;
  int sum = 0;
  vector<int> v;
  int in;
  rep(i, n){
    cin >> in;
    sum += in;
    if(in%10 != 0) v.pb(in);
  }
  
  sort(v.begin(), v.end());
    
  rep(i, v.size()){
    if(sum % 10 != 0) break;
    sum -= v[i];
  }
  
  if(sum % 10 == 0) sum = 0;
  cout << sum << endl;
}

問題D: Widespread

#include<bits/stdc++.h>

#define rep(i, n) REP(i, 0, n)
#define REP(i, a, n) for(int i = a ; i < (int)n ; i++)

using namespace std;

typedef long long ll;

int h[100001];
ll n, a, b;

bool check(ll t){
  ll cnt = 0;

  rep(i, n){
    if(h[i] > b * t){
      cnt += (h[i] - b * t) / (a-b);
      if(((h[i] - b * t) % (a - b)) != 0) cnt++;
    }
  }
  return cnt <= t;
}

signed main(){

  scanf("%lld %lld %lld", &n, &a, &b);

  rep(i, n) scanf("%d", h+i);
    
  ll l, r, mid, ans;
  l = 0; r = 1e9;

  while(l <= r){
    mid = (l + r) / 2;
    
    if(check(mid)){
      ans = mid;
      r = mid - 1;
    }else{
      l = mid + 1;
    }
  }

  cout << ans << endl;
  
}