제출 #38720

#제출 시각아이디문제언어결과실행 시간메모리
38720daniel_02원숭이와 사과 나무 (IZhO12_apple)C++14
0 / 100
753 ms123888 KiB
#include <bits/stdc++.h> #define ll long long #define OK cout << "OK" << endl; using namespace std; const int N = 7e6 + 8e5; const int inf = 1e9 + 7; struct node { int sum, l, r,add; node() { sum = l = r = add = 0; } }t[N]; int cnt = 2; int c; void push (int v,int tl,int tr) { if (t[v].add != 0) { if (!t[v].l) t[v].l = cnt ++; if (!t[v].r) t[v].r = cnt ++; t[t[v].l].add = 1; t[t[v].r].add = 1; t[v].sum = (tr - tl + 1); t[v].add = 0; } } void update(int v, int tl, int tr, int l, int r) { if (tr < l || tl > r) { return; } push (v,tl,tr); if (tl >= l && r >= tr) { t[v].add = 1; } else { int mid = (tl + tr) >> 1; if (!t[v].l) { t[v].l = cnt++; } update(t[v].l, tl, mid, l, r); if (!t[v].r) { t[v].r = cnt++; } update(t[v].r, mid + 1, tr, l, r); push (v,tl,tr); push (t[v].l,tl,mid); push (t[v].r,mid + 1,tr); t[v].sum = max(t[v].sum,t[t[v].l].sum + t[t[v].r].sum); } } int get(int v, int tl, int tr, int l, int r) { if (tl > r || l > tr) { return 0; } push (v,tl,tr); if (tl >= l && r >= tr) { return t[v].sum; } else { int mid = (tl + tr) >> 1; int s1 = 0, s2 = 0; if (t[v].l) { s1 = get(t[v].l, tl, mid, l, r); } if (t[v].r) { s2 = get(t[v].r, mid + 1, tr, l, r); } return (s1 + s2); } } main() { int m; cin >> m; while (m--) { int ty, l, r; scanf("%d", &ty); scanf("%d%d", &l, &r); l += c; r += c; if (ty == 1) { int ans; ans = get(1, 1, inf, l, r); cout << ans << endl; c = ans; } else { update(1, 1, inf, l, r); } } }

컴파일 시 표준 에러 (stderr) 메시지

apple.cpp:101:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main()
      ^
apple.cpp: In function 'int main()':
apple.cpp:111:25: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &ty);
                         ^
apple.cpp:112:30: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d", &l, &r);
                              ^
#Verdict Execution timeMemoryGrader output
Fetching results...