Submission #848934

#TimeUsernameProblemLanguageResultExecution timeMemory
848934Ahmed_SolymanMonkey and Apple-trees (IZhO12_apple)C++14
Compilation error
0 ms0 KiB
/* In the name of Allah made by: Ahmed_Solyman */ #include <bits/stdc++.h> #include <ext/rope> using namespace std; using namespace __gnu_cxx; #pragma GCC optimize("-Ofast") #pragma GCC optimize("-O1") //-------------------------------------------------------------// typedef long long ll; typedef unsigned long long ull; #define fast ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define PI acos(-1) #define lb lower_bound #define ub upper_bound #define all(v) v.begin(),v.end() #define allr(v) v.rbegin(),v.rend() #define sum_to(n) (n*(n+1))/2 #define pb push_back #define pf push_front #define fil(arr,x) memset(arr,x,sizeof(arr)) #define REP(i,a,b) for (int i=a;i<=b;i++) #define F first #define S second #define MP make_pair const ll mod=1e9+7; int dx[8]={0,1,0,-1,1,1,-1,-1}; int dy[8]={1,0,-1,0,1,-1,-1,1}; //-------------------------------------------------------------// ll lcm(ll a,ll b) { return (max(a,b)/__gcd(a,b))*min(a,b); } void person_bool(bool x) { cout<<(x?"YES":"NO")<<endl; } const int N=4e5+5; struct node{ int sum,lazy,l,r,left,right; Node() : sum(0), lazy(0), left(-1), right(-1) {} }segtree[64*N]; int cnt=2; void push_lazy(int node){ if(segtree[node].lazy){ segtree[node].sum=segtree[node].r-segtree[node].l+1; int mid=(segtree[node].l+segtree[node].r)/2; if(segtree[node].left==-1){ segtree[node].left=cnt; segtree[cnt].l=segtree[node].l; segtree[cnt++].r=mid; } if(segtree[node].right==-1){ segtree[node].right=cnt; segtree[cnt].l=mid+1; segtree[cnt++].r=segtree[node].r; } segtree[segtree[node].left].lazy=segtree[segtree[node].right].lazy=1; segtree[node].lazy=0; } } void update(int node,int l,int r){ push_lazy(node); if(segtree[node].l==l && segtree[node].r==r){ segtree[node].lazy=1; push_lazy(node); return; } int mid=(segtree[node].l+segtree[node].r)/2; if(segtree[node].left==-1){ segtree[node].left=cnt; segtree[cnt].l=segtree[node].l; segtree[cnt++].r=mid; } if(segtree[node].right==-1){ segtree[node].right=cnt; segtree[cnt].l=mid+1; segtree[cnt++].r=segtree[node].r; } if(l>mid)update(segtree[node].right,l,r); else if(r<=mid)update(segtree[node].left,l,r); else update(segtree[node].left,l,mid),update(segtree[node].right,mid+1,r); push_lazy(segtree[node].l); push_lazy(segtree[node].r); segtree[node].sum=segtree[segtree[node].l].sum+segtree[segtree[node].r].sum; } int query(int node,int l,int r){ push_lazy(node); if(segtree[node].l==l && segtree[node].r==r){ return segtree[node].sum; } int mid=segtree[node].l+segtree[node].r>>1; if(segtree[node].left==-1){ segtree[node].left=cnt; segtree[cnt].l=segtree[node].l; segtree[cnt++].r=mid; } if(segtree[node].right==-1){ segtree[node].right=cnt; segtree[cnt].l=mid+1; segtree[cnt++].r=segtree[node].r; } if(l>mid)return query(segtree[node].right,l,r); else if(r<=mid)return query(segtree[node].left,l,r); else return query(segtree[node].left,l,mid)+query(segtree[node].right,mid+1,r); } int main() { //freopen("input.txt","r",stdin); //freopen("output.txt","w",stdout); segtree[1].l=1; segtree[1].r=1e9; int q;cin>>q; int c=0; while(q--){ int t,l,r;cin>>t>>l>>r; if(t==1){ c=query(1,l+c,r+c); cout<<c<<endl; } else{ update(1,l+c,r+c); } } return 0; }

Compilation message (stderr)

apple.cpp:44:5: error: ISO C++ forbids declaration of 'Node' with no type [-fpermissive]
   44 |     Node() : sum(0), lazy(0), left(-1), right(-1) {}
      |     ^~~~
apple.cpp: In member function 'int node::Node()':
apple.cpp:44:14: error: only constructors take member initializers
   44 |     Node() : sum(0), lazy(0), left(-1), right(-1) {}
      |              ^~~
apple.cpp:44:52: warning: no return statement in function returning non-void [-Wreturn-type]
   44 |     Node() : sum(0), lazy(0), left(-1), right(-1) {}
      |                                                    ^
apple.cpp: In function 'int query(int, int, int)':
apple.cpp:95:28: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   95 |     int mid=segtree[node].l+segtree[node].r>>1;
      |             ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~