AOJのRUQのジャッジで時間超過しました。
この問題を解決したいです。
該当のソースコード
c++
1#include <iostream> 2#include <vector> 3using namespace std; 4 5#define INF 2147483647 6 7vector<int> node; 8int N; 9 10void update(int s, int t, int x) { 11 s += N - 1; 12 t += N - 1; 13 14 //cout << "update s = " << s << " t = " << t << endl; 15 16 while(s <= t){ 17 //cout << s << endl; 18 node[s] = x; 19 s++; 20 } 21 22} 23 24 25int find(int i) { 26 //cout << "find " << i + N - 1 << endl; 27 return node[i + N - 1]; 28} 29 30 31 32int main() { 33 34 int n, q; 35 cin >> n >> q; 36 N = 1; 37 38 while (N < n) N *= 2; 39 40 node = vector<int>(2 * N - 1, INF); 41 42 for (int j = 0; j < q; j++) { 43 44 int com; 45 cin >> com; 46 47 if (com == 0) { 48 int s, t, x; 49 cin >> s >> t >> x; 50 update(s, t, x); 51 } 52 53 else { 54 int i; 55 cin >> i; 56 cout << find(i) << endl; 57 } 58 } 59 return 0; 60}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。