Official
B - Sensor Data Logging Editorial
by
B - Sensor Data Logging Editorial
by
physics0523
問題文に従って実装すればよいです。
- 時刻 \(0\) の測定値は必ず保存されるので、その測定値を「保存された値」として時刻 \(0\) の情報を出力する。
- 時刻 \(i=1,2,\dots,T\) について、以下を繰り返す。
- 「保存された値」と「現在の測定値」との差の絶対値を計算する。
- 絶対値を求めるのに、例えば C++ では
abs関数が便利です。また、そのような関数が標準で存在しないとしても \(|a-b| = \max(a,b)-\min(a,b)\) とすることで差の絶対値を取得できます。
- 絶対値を求めるのに、例えば C++ では
- ふたつの値の差が \(x\) 以上であった場合、現在の測定値を新たに記録し、時刻 \(i\) の情報を出力する。
- 「保存された値」と「現在の測定値」との差の絶対値を計算する。
一連の流れは、 for 文と if 文との組み合わせなどで実現可能です。
実装例 (C++):
#include<bits/stdc++.h>
using namespace std;
int main(){
int t,x;
cin >> t >> x;
int save;
cin >> save;
cout << "0 " << save << "\n";
for(int i=1;i<=t;i++){
int a;
cin >> a;
if(abs(save-a)>=x){
save=a;
cout << i << " " << save << "\n";
}
}
return 0;
}
posted:
last update:
