ABC037-B 編集|AtCoder|std::fill()
B: 編集 - AtCoder Beginner Contest 037 | AtCoder を解きました。
コンテストの日に提出したコードは自分でも謎すぎて説明出来ないので割愛。
提出し直したものを...↓
#include <bits/stdc++.h> using namespace std; int main(){ cin.tie(0); ios::sync_with_stdio(false); int N, Q; cin >> N >> Q; vector<int> vc(N); while(Q--){ int L, R, T; cin >> L >> R >> T; L--; fill(vc.begin() + L, vc.begin() + R, T); //<-----!!!!!!!!!! } for(auto x: vc){ cout << x << endl; } return 0; }
std::fill()という、凄く便利な関数を学習しました!!
なんとこれ、配列の指定した位置に対して同じ値を代入できるんですよ...!
今回で言うと vc.begin + L と vc.begin + R の範囲を T の値で全部上書き。
すごいーーー!!!!(超学習的)
vectorの一括初期化にも使えるっぽいです。
使える機会あるといいな〜...
( 参考:std::fill - C++入門 )