寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

アルゴ式(beta版): C++による「日本情報オリンピック (予選) 過去問」JOI 2014/2015 予選 (前半)の解答例

アルゴ式(beta版)の「日本情報オリンピック (予選) 過去問」JOI 2014/2015 予選 (前半)からの出典です。
algo-method.com
アルゴ式とは...
>・プログラミングや情報科学をコツコツ学べる「教科書」
>・学んだ内容をゲーム感覚で大量に実践できる「練習問題」
>の2つで構成される、Web上で完結した学習コンテンツです。

C++による「日本情報オリンピック (予選) 過去問」JOI 2014/2015 予選 (前半)の解答例

僕が作成、提出したコードは、以下のとおりです。

・問題 1: 水道料金

algo-method.com

/*
C++による「日本情報オリンピック (予選) 過去問」JOI 2014/2015 予選 (前半)の解答例
問題 1: 水道料金
https://algo-method.com/tasks/570
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  int a,b,c,d,p;
  cin>>a>>b>>c>>d>>p;
  int x=a*p;
  int y=b+((p>c) ? d*(p-c) : 0);
  cout<<min(x,y)<<endl;
  return 0;
}
・問題 2: クリスマスパーティー

algo-method.com

/*
C++による「日本情報オリンピック (予選) 過去問」JOI 2014/2015 予選 (前半)の解答例
問題 2: クリスマスパーティー
https://algo-method.com/tasks/571
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  int n,m;
  cin>>n>>m;
  vector<int> target,score(n,0);
  for(int i=0;i<m;i++){
    int t;
    cin>>t;
    target.push_back(t);
  }
  for(int i=0;i<m;i++){
    int j=target[i]-1;
    score[j]+=n;
    for(int k=0;k<n;k++){
      int l;
      cin>>l;
      l--;
      if(l!=j){
        continue;
      }
      score[j]--;
      score[k]++;
    }
  }
  for(int i=0;i<n;i++){
    cout<<score[i]<<endl;
  }
  return 0;
}
・問題 3: 気象予報士

algo-method.com

/*
C++による「日本情報オリンピック (予選) 過去問」JOI 2014/2015 予選 (前半)の解答例
問題 3: 気象予報士
https://algo-method.com/tasks/575
提出コードの解答例
https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
  int h,w;
  cin>>h>>w;
  char c[h][w];
  for(int i=0;i<h;i++){
    for(int j=0;j<w;j++){
      cin>>c[i][j];
    }
  }
  for(int i=0;i<h;i++){
    int num=-1;
    for(int j=0;j<w;j++){
      if(c[i][j]=='c'){
        num=j;
      }
      int out=-1;
      if(num!=-1){
        out=j-num;
      }
      cout<<out<<((j==w-1) ? "\n" : " ");
    }
  }
  return 0;
}

設問の出典は、情報科学をコツコツ積み立てて学習できるサービス「アルゴ式(beta版)」です。
algo-method.com