Light Oj 1082 – Array Queries solution

  1. #include<bits/stdc++.h>
  2. #define mx 1000005
  3. using namespace std;
  4. int arr[mx];
  5. int tree[mx*3];
  6. void init(int node,int b,int e)
  7. {
  8.     if(b==e)
  9.     {
  10.         tree[node]=arr[b];
  11.         return;
  12.     }
  13.     int left=node*2;
  14.     int right=node*2+1;
  15.     int mid=(b+e)/2;
  16.     init(left,b,mid);
  17.     init(right,mid+1,e);
  18.     tree[node]=min(tree[left],tree[right]);
  19. }
  20. int query(int node,int b,int e,int i,int j)
  21. {
  22.     if(i>e || j<b)
  23.         return mx;
  24.     if(b>=i && e<=j)
  25.         return tree[node];
  26.     int left=node*2;
  27.     int right=node*2+1;
  28.     int mid=(b+e)/2;
  29.     int q1=query(left,b,mid,i,j);
  30.     int q2=query(right,mid+1,e,i,j);
  31.     return min(q1,q2);
  32. }
  33. int main()
  34. {
  35.     int t,n,q,i,j,x,y,min;
  36.     scanf(“%d”,&t);
  37.     for(int i=1; i<=t; i++)
  38.     {
  39.         scanf(“%d %d”,&n,&q);
  40.         //cin>>n>>q;
  41.         for(int j=1; j<=n; j++)
  42.         {
  43.             //cin>>arr[j];
  44.             scanf(“%d”,&arr[j]);
  45.             //b[j]=a[j];
  46.         }
  47.         init(1,1,n);
  48.         printf(“Case %d:\n”,i);
  49.         for(int k=1; k<=q; k++)
  50.         {
  51.             //cin>>x>>y;
  52.             scanf(“%d %d”,&x,&y);
  53.             int ans=query(1,1,n,x,y);
  54.             //cout<<ans<<endl;
  55.             printf(“%d\n”,ans);
  56.         }
  57.     }
  58.     return 0;
  59. }

Light Oj 1112 – Curious Robin Hood solution

  1. #include<bits/stdc++.h>
  2. #define mx 100005
  3. using namespace std;
  4. int arr[mx];
  5. int tree[mx*3];
  6. void init(int node,int b,int e)
  7. {
  8.     if(b==e){
  9. 
    
  10.         tree[node]=arr[b];
  11.         return;
  12.     }
  13.     int left =node*2;
  14.     int right = node*2+1;
  15.     int mid=(b+e)/2;
  16.     init(left,b,mid);
  17.     init(right,mid+1,e);
  18.     tree[node]= tree[left]+tree[right];
  19. 
    
  20. 
    
  21. }
  22. 
    
  23. int query(int node,int b,int e,int i, int j)
  24. {
  25.     if(b>j || e<i){
  26.         return 0;
  27.     }
  28.     if(b>=i && e<=j){
  29.         return tree[node];
  30.  }
  31.     int left =node*2;
  32.     int right = node*2+1;
  33.     int mid=(b+e)/2;
  34.     int q1=query(left,b,mid,i,j);
  35.     int q2=query(right,mid+1,e,i,j);
  36.      return q1+q2;
  37. }
  38. 
    
  39. void update(int node,int b,int e,int i,int newvalue)
  40. {
  41. 
    
  42. 
    
  43.     if(i>e || i<b)
  44.         return;
  45.     if(b>=i && e<=i){
  46.         tree[node]=newvalue;
  47.         return;
  48.     }
  49. 
    
  50.     int left =node*2;
  51.     int right = node*2+1;
  52.     int mid=(b+e)/2;
  53.     update(left,b,mid,i,newvalue);
  54.     update(right,mid+1,e,i,newvalue);
  55.     tree[node]= tree[left]+tree[right];
  56. }
  57. int main()
  58. {
  59.     int t,n,q,v,x,y,z;
  60.     scanf("%d",&t);
  61.     for(int i=1;i<=t;i++)
  62.     {
  63.         printf("Case %d:\n",i);
  64. 
    
  65.         scanf("%d %d",&n,&q);
  66.         for(int j=0;j<n;j++){
  67.             scanf("%d",&arr[j]);
  68.         }
  69.             init(1,0,n-1);
  70.         for(int k=0;k<q;k++)
  71.         {
  72.             scanf("%d",&x);
  73.             if(x==1)
  74.             {
  75.                 scanf("%d",&y);
  76.                 printf("%d\n",arr[y]);
  77.                 arr[y]=0;
  78.                 update(1,0,n-1,y,0);
  79.             }
  80.             else if(x==2)
  81.             {
  82.                 scanf("%d %d",&y,&z);
  83.                 arr[y]+=z;
  84.                 update(1,0,n-1,y,arr[y]);
  85.                 //printf("%d\n",ans);
  86.             }
  87.             else
  88.             {
  89.                 scanf("%d %d",&y,&z);
  90.                 int ans=query(1,0,n-1,y,z);
  91.                 printf("%d\n",ans);
  92.             }
  93.         }
  94.     }
  95.     return 0;
  96. }

Light Oj 1164 – Horrible Queries solution

  1. #include<bits/stdc++.h>
  2. #define mx 100005
  3. #define lld long long int
  4. using namespace std;
  5. lld arr[mx];
  6. //lld tree[mx*3];
  7. struct node{
  8.         lld  prop,sum;
  9. }tree[mx*3];
  10. void init(lld node,lld b,lld e)
  11. {
  12.     if(b==e){
  13.         tree[node].sum=arr[b];
  14.         return;
  15.     }
  16.     lld left =node*2;
  17.     lld right = node*2+1;
  18.     lld mid=(b+e)/2;
  19.     init(left,b,mid);
  20.     init(right,mid+1,e);
  21.     tree[node].sum= tree[left].sum+tree[right].sum;
  22. }
  23. lld query(lld node,lld b,lld e,lld i, lld j,lld carry=0)
  24. {
  25.     if(b>j || e<i){
  26.         return 0;
  27.     }
  28.     if(b>=i && e<=j){
  29.         return tree[node].sum + carry *(e-b+1);
  30.  }
  31.     lld left =node*2;
  32.     lld right = node*2+1;
  33.     lld mid=(b+e)/2;
  34.     lld q1=query(left,b,mid,i,j,carry+tree[node].prop);
  35.     lld q2=query(right,mid+1,e,i,j,carry+tree[node].prop);
  36.      return q1+q2;
  37. }
  38. void update(lld node,lld b,lld e,lld i,lld j,lld x)
  39. {
  40.     if(b>j || e<i)
  41.         return;
  42.     if(b>=i && e<=j){
  43.         tree[node].sum += ((e-b+1)*x);
  44.         tree[node].prop += x;
  45.         return;
  46.     }
  47.     lld left =node*2;
  48.     lld right = node*2+1;
  49.     lld mid=(b+e)/2;
  50.     update(left,b,mid,i,j,x);
  51.     update(right,mid+1,e,i,j,x);
  52.     tree[node].sum= tree[left].sum+tree[right].sum+(e-b+1)*tree[node].prop;
  53. }
  54. int main()
  55. {
  56.     lld t,n,q,v,x,y,z;
  57.     scanf(“%lld”,&t);
  58.     for(lld i=1;i<=t;i++)
  59.     {
  60.         memset(arr,0,sizeof(arr));
  61.         memset(tree,0,sizeof(tree));
  62.         printf(“Case %d:\n”,i);
  63.         scanf(“%lld %lld”,&n,&q);
  64.         /*for(lld j=0;j<n;j++){
  65.             scanf(“%d”,&arr[j]);
  66.         }*/
  67.         init(1,0,n-1);
  68.         for(lld k=0;k<q;k++)
  69.         {
  70.             scanf(“%lld”,&x);
  71.             if(x==0)
  72.             {
  73.                 scanf(“%lld %lld %lld”,&y,&z,&v);
  74.                 //arr[y]+=z;
  75.                 update(1,0,n-1,y,z,v);
  76.                 //prlldf(“%d\n”,ans);
  77.             }
  78.             else if(x==1)
  79.             {
  80.                 scanf(“%lld %lld”,&y,&z);
  81.                 lld ans=query(1,0,n-1,y,z,0);
  82.                 printf(“%lld\n”,ans);
  83.             }
  84.         }
  85.     }
  86.     return 0;
  87. }

Light Oj 1093 – Ghajini solution

  1. #include<bits/stdc++.h>
  2. #define mx 100005
  3. using namespace std;
  4. long long int arr[mx];
  5. long long int max_tree[mx*3];
  6. long long int min_tree[mx*3];
  7. void init(long long int node,long long int b,long long int e){
  8.     if(b==e)
  9.         {
  10.             max_tree[node]=arr[b];
  11.             min_tree[node]=arr[b];
  12.             return;
  13.         }
  14.         long long int left = node*2;
  15.         long long int right = node*2+1;
  16.         long long int mid=(b+e)/2;
  17.         init(left,b,mid);
  18.         init(right,mid+1,e);
  19.         max_tree[node]=max(max_tree[left],max_tree[right]);
  20.         min_tree[node]=min(min_tree[left],min_tree[right]);
  21. }
  22. long long int max_query(long long int node,long long int b,long long int e,long long int i,long long int j)
  23. {
  24.     if(e<i || b>j)
  25.         return 0;
  26.     if(b>=i && e<=j)
  27.     {
  28.         return max_tree[node];
  29.     }
  30.     long long int left = node*2;
  31.     long long int right = node*2+1;
  32.     long long int mid=(b+e)/2;
  33.     long long int q1=max_query(left,b,mid,i,j);
  34.     long long int q2=max_query(right,mid+1,e,i,j);
  35.     return max(q1,q2);
  36. }
  37. long long int min_query(long long int node,long long int b,long long int e,long long int i,long long int j)
  38. {
  39.     if(e<i || b>j)
  40.         return 10000000;
  41.     if(b>=i && e<=j)
  42.     {
  43.         return min_tree[node];
  44.     }
  45.     long long int left = node*2;
  46.     long long int right = node*2+1;
  47.     long long int mid=(b+e)/2;
  48.     long long int q1=min_query(left,b,mid,i,j);
  49.     long long int q2=min_query(right,mid+1,e,i,j);
  50.     return min(q1,q2);
  51. }
  52. int main(){
  53.     long long int t,n,q,diff;
  54.     scanf(“%lld”,&t);
  55.     for(long long int i=1;i<=t;i++){
  56.             long long int ans=0;
  57.         scanf(“%lld %lld”,&n,&q);
  58.         for(long long int j=1;j<=n;j++)
  59.         {
  60.             scanf(“%lld”,&arr[j]);
  61.         }
  62.         init(1,1,n);
  63.         q–;
  64.         for(long long int k=1;k<=n-q;k++)
  65.         {
  66.             long long int max1=max_query(1,1,n,k,k+q);
  67.             long long int min1=min_query(1,1,n,k,k+q);
  68.             long long int diff=(max1-min1);
  69.             //cout<<diff<<endl;
  70.             //ans=max(ans,diff);
  71.             if(ans<diff)
  72.                 ans=diff;
  73.             //cout<<“ans “<<ans<<endl;
  74.         }
  75.         printf(“Case %lld: %d\n”,i,ans);
  76.     }
  77.     return 0;
  78. }

Light Oj 1212 – Double Ended Queue solution

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5.     int t,n,m,x,y;
  6.     string s;
  7.     //int a[100];
  8.     cin>>t;
  9.     for(int i=1; i<=t; i++)
  10.     {
  11.         deque<int>mydq;
  12.         //memset(a,0,100);
  13.         printf(“Case %d:\n”,i);
  14.         cin>>n>>m;
  15.         for(int j=1; j<=m; j++)
  16.         {
  17.             cin>>s;
  18.             if(s==”pushLeft”)
  19.             {
  20.                 cin>>x;
  21.                 if(mydq.size()==n)
  22.                 {
  23.                     printf(“The queue is full\n”);
  24.                     //continue;
  25.                 }
  26.                 else
  27.                 {
  28.                     mydq.push_front(x);
  29.                     printf(“Pushed in left: %d\n”,x);
  30.                 }
  31.             }
  32.             else if(s==”pushRight”)
  33.             {
  34.                 cin>>x;
  35.                 if(mydq.size()==n)
  36.                 {
  37.                     printf(“The queue is full\n”);
  38.                     //continue;
  39.                 }
  40.                 else
  41.                 {
  42.                     mydq.push_back(x);
  43.                     printf(“Pushed in right: %d\n”,x);
  44.                 }
  45.             }
  46.             else if(s==”popLeft”)
  47.             {
  48.                 //cin>>x;
  49.                 if(mydq.empty())
  50.                 {
  51.                     printf(“The queue is empty\n”);
  52.                     //continue;
  53.                 }
  54.                 else
  55.                 {
  56.                     printf(“Popped from left: %d\n”,mydq.front());
  57.                     mydq.pop_front();
  58.                 }
  59.             }
  60.             else if(s==”popRight”)
  61.             {
  62.                 //cin>>x;
  63.                 if(mydq.empty())
  64.                 {
  65.                     printf(“The queue is empty\n”);
  66.                     //continue;
  67.                 }
  68.                 else
  69.                 {
  70.                     printf(“Popped from right: %d\n”,mydq.back());
  71.                     mydq.pop_back();
  72.                 }
  73.             }
  74.         }
  75.     }
  76.     return 0;
  77. }

Light Oj 1080 – Binary Simulation solution

  1. #include<bits/stdc++.h>
  2. #define mx 100005
  3. using namespace std;
  4. int tree[mx*3];
  5. void build_tree(int node,int b,int e)
  6. {
  7.     if(b==e)
  8.     {
  9.         tree[node]=0;
  10.         return;
  11.     }
  12.     int left=2*node;
  13.     int right=2*node+1;
  14.     int mid=(b+e)/2;
  15.     build_tree(left,b,mid);
  16.     build_tree(right,mid+1,e);
  17.     tree[node]=0;
  18. }
  19. void update(int node,int b,int e,int i,int j)
  20. {
  21.     if(j<b || i>e)
  22.         return ;
  23.     if(i<=b && j>=e)
  24.     {
  25.         tree[node]++;
  26.         return ;
  27.     }
  28.     int left=2*node;
  29.     int right=2*node+1;
  30.     int mid=(b+e)/2;
  31.     update(left,b,mid,i,j);
  32.     update(right,mid+1,e,i,j);
  33. }
  34. int query(int node,int b,int e, int i)
  35. {
  36.     if(i<b || i > e)
  37.         return 0;
  38.     if(i==b && i==e)
  39.         return tree[node];
  40.     int left=2*node;
  41.     int right=2*node+1;
  42.     int mid=(b+e)/2;
  43.     if(i<=mid)
  44.         return tree[node]+query(left,b,mid,i);
  45.     else
  46.         return tree[node]+query(right,mid+1,e,i);
  47. }
  48. int main()
  49. {
  50.     int n,t,x,y,ans;
  51.     char s[mx];
  52.     char ch;
  53.     scanf(“%d”,&n);
  54.     getchar();
  55.     for(int i=1; i<=n; i++)
  56.     {
  57.         memset(tree,0,mx*3);
  58.         //cin>>s;
  59.         scanf(“%s”,&s);
  60.         int ln=strlen(s);
  61.         //int ln=s.size();
  62.         build_tree(1,1,ln);
  63.         printf(“Case %d:\n”,i);
  64.         scanf(“%d”,&t);
  65.         getchar();
  66.         for(int j=1; j<=t; j++)
  67.         {
  68.             scanf(“%c”,&ch);
  69.             getchar();
  70.             if(ch==’I’)
  71.             {
  72.                 scanf(“%d %d”,&x,&y);
  73.                 update(1,1,ln,x,y);
  74.                 getchar();
  75.             }
  76.             else
  77.             {
  78.                 scanf(“%d”,&x);
  79.                 int ans=query(1,1,ln,x);
  80.                 getchar();
  81.                 if(ans%2==0)
  82.                     printf(“%d\n”,s[x-1]-‘0’);
  83.                 else
  84.                     printf(“%d\n”,(s[x-1]-‘0’)^1);
  85.             }
  86.         }
  87.     }
  88.     return 0;
  89. }

Light Oj 1087 – Diablo solution

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5.     int n,t,p,q,x,y;
  6.     scanf(“%d”,&t);
  7.     for(int i=1;i<=t;i++)
  8.     {
  9.         printf(“Case %d:\n”,i);
  10.         scanf(“%d %d”,&p,&q);
  11.         vector<int>v;
  12.         for(int j=1;j<=p;j++)
  13.         {
  14.             scanf(“%d”,&x);
  15.             v.push_back(x);
  16.         }
  17.         for(int k=1;k<=q;k++)
  18.         {
  19.             getchar();
  20.             char ch;
  21.             scanf(“%c”,&ch);
  22.             if(ch==’a’)
  23.             {
  24.                 scanf(“%d”,&y);
  25.                 v.push_back(y);
  26.             }
  27.             else
  28.             {
  29.                 scanf(“%d”,&y);
  30.                 if(v.size()>=y){
  31.                 printf(“%d\n”,v[y-1]);
  32.                 v.erase(v.begin()+y-1);
  33.                 }
  34.                 else
  35.                     printf(“none\n”);
  36.             }
  37.         }
  38.     }
  39.     return 0;
  40. }

Light oj 1088 – Points in Segments solution

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int points[100001];
  4. int main() {
  5.     int test, cs, n, i, a, b, q;
  6.     scanf(“%d”, &test);
  7.     for(cs = 1; cs <= test; cs++) {
  8.         scanf(“%d %d”, &n, &q);
  9.         for(i = 0; i < n; i++) scanf(“%d”, points + i);
  10.         printf(“Case %d:\n”, cs);
  11.         while(q–) {
  12.             scanf(“%d %d”, &a, &b);
  13.             a = lower_bound(points, points + n, a) – points;
  14.             b = upper_bound(points + a, points + n, b) – points;
  15.             printf(“%d\n”, b – a);
  16.         }
  17.     }
  18.     return 0;
  19. }

WelCome To My world

IMG_20150105_093424

আমি মোঃ ইকবাল হোসেন ইকরা,জন্ম ১৯৯৪ ,২৪ অক্টোবর ।স্কুল ও কলেজ দুটোই রাজেন্দ্রপুর ক্যান্টনমেন্ট পাবলিক স্কুল ও কলেজ ।২০১০ এ এস,এস,সি আর ২০১২ তে এইচ,এস,সি পাশ করি । বর্তমানে আমি মাওলান ভাসানি বিজ্ঞান ও প্রযুক্তি বিশ্ববিদ্যালয় এ আই,সি,টি বিভাগে আধ্যায়ণ করছি । জন্ম মাদারিপুরের কালকিনি থানার উত্তর রমজান পুর গ্রামে । বর্তমানে গাজীপুরের রাজেন্দ্রপুর ক্যান্টনমেন্ট এ আছি ।