AtCoder Beginner Contest #031 B問題 - 運動管理

Source

AtCoder Beginner Contest #031
問題文

問題概要

高橋くんは毎週 $L$ 分以上 $H$ 分以下運動をすることになっている.
過去 $N$ 週分,その週に実際に運動した時間 $A_1,A_2,\ldots,A_N$ が与えられる.
各週について,運動をしすぎているなら $-1$ を,そうでないなら,何分間運動が足りていなかったか(足りているなら $0$)を求める問題.

解法

条件分岐しながら計算する.
時間計算量 $O(N)$.

C++によるスパゲッティなソースコード

#include<bits/stdc++.h>
using namespace std;

#define mygc(c) (c)=getchar_unlocked()
#define mypc(c) putchar_unlocked(c)

void reader(int *x){int k,m=0;*x=0;for(;;){mygc(k);if(k=='-'){m=1;break;}if('0'<=k&&k<='9'){*x=k-'0';break;}}for(;;){mygc(k);if(k<'0'||k>'9')break;*x=(*x)*10+k-'0';}if(m)(*x)=-(*x);}
template <class T, class S, class U> void reader(T *x, S *y, U *z){reader(x);reader(y);reader(z);}
void writer(int x, char c){int s=0,m=0;char f[10];if(x<0)m=1,x=-x;while(x)f[s++]=x%10,x/=10;if(!s)f[s++]=0;if(m)mypc('-');while(s--)mypc(f[s]+'0');mypc(c);}
template<class T> void writerLn(T x){writer(x,'\n');}

int main(){
  int i, res;
  int L, H, N;

  reader(&L,&H,&N);
  while(N--){
    reader(&i);
    res = 0;
    if(i > H) res = -1;
    else if(i < L) res = L - i;
    writerLn(res);
  }

  return 0;
}

Current time: 2017年11月19日12時17分43秒
Last modified: 2015年11月22日07時51分14秒 (by laycrs)
Tags: Competitive_Programming AtCoder AtCoder_Beginner_Contest ABC031 ABC_B
トップページに戻る

Logged in as: unknown user (not login)

ログイン: