[ZICO BA]が解決しましたac CLASS 2 Part 2

24344 ワード

1436) 映画監督
#include <iostream>
#include <string>

using namespace std;

int main() {
  int n;
  cin >> n;

  int index = 0;
  int title = 0;

  while (index < n) {
    title++;
    if (to_string(title).find("666") != string::npos) {
      index++;
    }
  }

  cout << title << '\n';
  
  return 0;
}
1654) ローカルエリアネットワークのクリップ
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;

int k, n;
vector<int> cables;
unsigned int min_len = 1;
unsigned int max_len = 0;

int search() {
  unsigned int result = 0;

  while(min_len <= max_len){
    int cn = 0;
    unsigned int mid = (min_len + max_len) / 2;
    for (vector<int>::iterator it = cables.begin(); it != cables.end(); ++it) {
      cn += *it / mid;
    }

    if (cn < n){
      max_len = mid - 1;
    } else if (cn >= n) {
      min_len = mid + 1;
    }

    result = max_len;
  }

  return result;
}

int main(){  
  cin >> k >> n;

  for(int i=0; i<k; i++){
    unsigned int len;
    cin >> len;
    max_len = max(max_len, len);
    cables.push_back(len);
  }

  cout << search() << '\n';

  return 0;
}
1874) スタック数列
#include <iostream>
#include <vector>
#include <stack>
#include <algorithm>

using namespace std;

stack<int> stack_seq;
vector<int> seq;
vector<char> op;

int main(){
  int n;
  cin >> n;

  for (int i=0; i<n; i++) {
    int num;
    cin >> num;
    seq.push_back(num);
  }

  vector<int>::iterator it = seq.begin();

  for(int i = 1; i <= seq.size(); i++){
    stack_seq.push(i);
    op.push_back('+');

    while(!(stack_seq.empty()) && stack_seq.top() == *it){
      stack_seq.pop();
      op.push_back('-');
      ++it;
    }
  }

  if (stack_seq.empty()){
    for(vector<char>::iterator it = op.begin(); it != op.end(); it++){
      cout << *it << '\n';
    }
  } else {
    cout << "NO" << '\n';
  }

  return 0;
}
1920) 数値の検索
#include <iostream>
#include <algorithm>

using namespace std;

int n, m;
int* arr;
int* values;

int search(int value){
  int first = 0;
  int last  = n - 1;

  while (first <= last){
    int mid = (first + last) / 2;
    if(value > arr[mid]) {
      first = mid + 1;
    } else if (value < arr[mid]) {
      last = mid - 1;
    } else {
      return 1;
    }
  }

  return 0;
}

int main() {
  cin >> n;

  arr = new int[n];

  for (int i = 0; i < n; i++) {
    cin >> arr[i];
  }

  cin >> m;

  values = new int[m];

  for (int i = 0; i < m; i++) {
    cin >> values[i];
  }

  sort(arr, arr+n);

  for (int i = 0; i < m; i++) {
    cout << search(values[i]) << '\n';
  }
  
  return 0;
}