-
#include<bits/stdc++.h>
-
#define mx 1000005
-
using namespace std;
-
int arr[mx];
-
int tree[mx*3];
-
void init(int node,int b,int e)
-
{
-
if(b==e)
-
{
-
tree[node]=arr[b];
-
return;
-
}
-
int left=node*2;
-
int right=node*2+1;
-
int mid=(b+e)/2;
-
init(left,b,mid);
-
init(right,mid+1,e);
-
tree[node]=min(tree[left],tree[right]);
-
}
-
int query(int node,int b,int e,int i,int j)
-
{
-
if(i>e || j<b)
-
return mx;
-
if(b>=i && e<=j)
-
return tree[node];
-
int left=node*2;
-
int right=node*2+1;
-
int mid=(b+e)/2;
-
int q1=query(left,b,mid,i,j);
-
int q2=query(right,mid+1,e,i,j);
-
return min(q1,q2);
-
}
-
int main()
-
{
-
int t,n,q,i,j,x,y,min;
-
scanf(“%d”,&t);
-
for(int i=1; i<=t; i++)
-
{
-
scanf(“%d %d”,&n,&q);
-
//cin>>n>>q;
-
for(int j=1; j<=n; j++)
-
{
-
//cin>>arr[j];
-
scanf(“%d”,&arr[j]);
-
//b[j]=a[j];
-
}
-
init(1,1,n);
-
printf(“Case %d:\n”,i);
-
for(int k=1; k<=q; k++)
-
{
-
//cin>>x>>y;
-
scanf(“%d %d”,&x,&y);
-
int ans=query(1,1,n,x,y);
-
//cout<<ans<<endl;
-
printf(“%d\n”,ans);
-
}
-
}
-
return 0;
-
}
Light Oj 1112 – Curious Robin Hood solution
-
#include<bits/stdc++.h>
-
#define mx 100005
-
using namespace std;
-
int arr[mx];
-
int tree[mx*3];
-
void init(int node,int b,int e)
-
{
-
if(b==e){
-
tree[node]=arr[b];
-
return;
-
}
-
int left =node*2;
-
int right = node*2+1;
-
int mid=(b+e)/2;
-
init(left,b,mid);
-
init(right,mid+1,e);
-
tree[node]= tree[left]+tree[right];
-
}
-
int query(int node,int b,int e,int i, int j)
-
{
-
if(b>j || e<i){
-
return 0;
-
}
-
if(b>=i && e<=j){
-
return tree[node];
-
}
-
int left =node*2;
-
int right = node*2+1;
-
int mid=(b+e)/2;
-
int q1=query(left,b,mid,i,j);
-
int q2=query(right,mid+1,e,i,j);
-
return q1+q2;
-
}
-
void update(int node,int b,int e,int i,int newvalue)
-
{
-
if(i>e || i<b)
-
return;
-
if(b>=i && e<=i){
-
tree[node]=newvalue;
-
return;
-
}
-
int left =node*2;
-
int right = node*2+1;
-
int mid=(b+e)/2;
-
update(left,b,mid,i,newvalue);
-
update(right,mid+1,e,i,newvalue);
-
tree[node]= tree[left]+tree[right];
-
}
-
int main()
-
{
-
int t,n,q,v,x,y,z;
-
scanf("%d",&t);
-
for(int i=1;i<=t;i++)
-
{
-
printf("Case %d:\n",i);
-
scanf("%d %d",&n,&q);
-
for(int j=0;j<n;j++){
-
scanf("%d",&arr[j]);
-
}
-
init(1,0,n-1);
-
for(int k=0;k<q;k++)
-
{
-
scanf("%d",&x);
-
if(x==1)
-
{
-
scanf("%d",&y);
-
printf("%d\n",arr[y]);
-
arr[y]=0;
-
update(1,0,n-1,y,0);
-
}
-
else if(x==2)
-
{
-
scanf("%d %d",&y,&z);
-
arr[y]+=z;
-
update(1,0,n-1,y,arr[y]);
-
//printf("%d\n",ans);
-
}
-
else
-
{
-
scanf("%d %d",&y,&z);
-
int ans=query(1,0,n-1,y,z);
-
printf("%d\n",ans);
-
}
-
}
-
}
-
return 0;
-
}
Light Oj 1164 – Horrible Queries solution
-
#include<bits/stdc++.h>
-
#define mx 100005
-
#define lld long long int
-
using namespace std;
-
lld arr[mx];
-
//lld tree[mx*3];
-
struct node{
-
lld prop,sum;
-
}tree[mx*3];
-
void init(lld node,lld b,lld e)
-
{
-
if(b==e){
-
tree[node].sum=arr[b];
-
return;
-
}
-
lld left =node*2;
-
lld right = node*2+1;
-
lld mid=(b+e)/2;
-
init(left,b,mid);
-
init(right,mid+1,e);
-
tree[node].sum= tree[left].sum+tree[right].sum;
-
}
-
lld query(lld node,lld b,lld e,lld i, lld j,lld carry=0)
-
{
-
if(b>j || e<i){
-
return 0;
-
}
-
if(b>=i && e<=j){
-
return tree[node].sum + carry *(e-b+1);
-
}
-
lld left =node*2;
-
lld right = node*2+1;
-
lld mid=(b+e)/2;
-
lld q1=query(left,b,mid,i,j,carry+tree[node].prop);
-
lld q2=query(right,mid+1,e,i,j,carry+tree[node].prop);
-
return q1+q2;
-
}
-
void update(lld node,lld b,lld e,lld i,lld j,lld x)
-
{
-
if(b>j || e<i)
-
return;
-
if(b>=i && e<=j){
-
tree[node].sum += ((e-b+1)*x);
-
tree[node].prop += x;
-
return;
-
}
-
lld left =node*2;
-
lld right = node*2+1;
-
lld mid=(b+e)/2;
-
update(left,b,mid,i,j,x);
-
update(right,mid+1,e,i,j,x);
-
tree[node].sum= tree[left].sum+tree[right].sum+(e-b+1)*tree[node].prop;
-
}
-
int main()
-
{
-
lld t,n,q,v,x,y,z;
-
scanf(“%lld”,&t);
-
for(lld i=1;i<=t;i++)
-
{
-
memset(arr,0,sizeof(arr));
-
memset(tree,0,sizeof(tree));
-
printf(“Case %d:\n”,i);
-
scanf(“%lld %lld”,&n,&q);
-
/*for(lld j=0;j<n;j++){
-
scanf(“%d”,&arr[j]);
-
}*/
-
init(1,0,n-1);
-
for(lld k=0;k<q;k++)
-
{
-
scanf(“%lld”,&x);
-
if(x==0)
-
{
-
scanf(“%lld %lld %lld”,&y,&z,&v);
-
//arr[y]+=z;
-
update(1,0,n-1,y,z,v);
-
//prlldf(“%d\n”,ans);
-
}
-
else if(x==1)
-
{
-
scanf(“%lld %lld”,&y,&z);
-
lld ans=query(1,0,n-1,y,z,0);
-
printf(“%lld\n”,ans);
-
}
-
}
-
}
-
return 0;
-
}
Light Oj 1093 – Ghajini solution
-
#include<bits/stdc++.h>
-
#define mx 100005
-
using namespace std;
-
long long int arr[mx];
-
long long int max_tree[mx*3];
-
long long int min_tree[mx*3];
-
void init(long long int node,long long int b,long long int e){
-
if(b==e)
-
{
-
max_tree[node]=arr[b];
-
min_tree[node]=arr[b];
-
return;
-
}
-
long long int left = node*2;
-
long long int right = node*2+1;
-
long long int mid=(b+e)/2;
-
init(left,b,mid);
-
init(right,mid+1,e);
-
max_tree[node]=max(max_tree[left],max_tree[right]);
-
min_tree[node]=min(min_tree[left],min_tree[right]);
-
}
-
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)
-
{
-
if(e<i || b>j)
-
return 0;
-
if(b>=i && e<=j)
-
{
-
return max_tree[node];
-
}
-
long long int left = node*2;
-
long long int right = node*2+1;
-
long long int mid=(b+e)/2;
-
long long int q1=max_query(left,b,mid,i,j);
-
long long int q2=max_query(right,mid+1,e,i,j);
-
return max(q1,q2);
-
}
-
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)
-
{
-
if(e<i || b>j)
-
return 10000000;
-
if(b>=i && e<=j)
-
{
-
return min_tree[node];
-
}
-
long long int left = node*2;
-
long long int right = node*2+1;
-
long long int mid=(b+e)/2;
-
long long int q1=min_query(left,b,mid,i,j);
-
long long int q2=min_query(right,mid+1,e,i,j);
-
return min(q1,q2);
-
}
-
int main(){
-
long long int t,n,q,diff;
-
scanf(“%lld”,&t);
-
for(long long int i=1;i<=t;i++){
-
long long int ans=0;
-
scanf(“%lld %lld”,&n,&q);
-
for(long long int j=1;j<=n;j++)
-
{
-
scanf(“%lld”,&arr[j]);
-
}
-
init(1,1,n);
-
q–;
-
for(long long int k=1;k<=n-q;k++)
-
{
-
long long int max1=max_query(1,1,n,k,k+q);
-
long long int min1=min_query(1,1,n,k,k+q);
-
long long int diff=(max1-min1);
-
//cout<<diff<<endl;
-
//ans=max(ans,diff);
-
if(ans<diff)
-
ans=diff;
-
//cout<<“ans “<<ans<<endl;
-
}
-
printf(“Case %lld: %d\n”,i,ans);
-
}
-
return 0;
-
}
Light Oj 1212 – Double Ended Queue solution
-
#include<bits/stdc++.h>
-
using namespace std;
-
int main()
-
{
-
int t,n,m,x,y;
-
string s;
-
//int a[100];
-
cin>>t;
-
for(int i=1; i<=t; i++)
-
{
-
deque<int>mydq;
-
//memset(a,0,100);
-
printf(“Case %d:\n”,i);
-
cin>>n>>m;
-
for(int j=1; j<=m; j++)
-
{
-
cin>>s;
-
if(s==”pushLeft”)
-
{
-
cin>>x;
-
if(mydq.size()==n)
-
{
-
printf(“The queue is full\n”);
-
//continue;
-
}
-
else
-
{
-
mydq.push_front(x);
-
printf(“Pushed in left: %d\n”,x);
-
}
-
}
-
else if(s==”pushRight”)
-
{
-
cin>>x;
-
if(mydq.size()==n)
-
{
-
printf(“The queue is full\n”);
-
//continue;
-
}
-
else
-
{
-
mydq.push_back(x);
-
printf(“Pushed in right: %d\n”,x);
-
}
-
}
-
else if(s==”popLeft”)
-
{
-
//cin>>x;
-
if(mydq.empty())
-
{
-
printf(“The queue is empty\n”);
-
//continue;
-
}
-
else
-
{
-
printf(“Popped from left: %d\n”,mydq.front());
-
mydq.pop_front();
-
}
-
}
-
else if(s==”popRight”)
-
{
-
//cin>>x;
-
if(mydq.empty())
-
{
-
printf(“The queue is empty\n”);
-
//continue;
-
}
-
else
-
{
-
printf(“Popped from right: %d\n”,mydq.back());
-
mydq.pop_back();
-
}
-
}
-
}
-
}
-
return 0;
-
}
Light Oj 1080 – Binary Simulation solution
-
#include<bits/stdc++.h>
-
#define mx 100005
-
using namespace std;
-
int tree[mx*3];
-
void build_tree(int node,int b,int e)
-
{
-
if(b==e)
-
{
-
tree[node]=0;
-
return;
-
}
-
int left=2*node;
-
int right=2*node+1;
-
int mid=(b+e)/2;
-
build_tree(left,b,mid);
-
build_tree(right,mid+1,e);
-
tree[node]=0;
-
}
-
void update(int node,int b,int e,int i,int j)
-
{
-
if(j<b || i>e)
-
return ;
-
if(i<=b && j>=e)
-
{
-
tree[node]++;
-
return ;
-
}
-
int left=2*node;
-
int right=2*node+1;
-
int mid=(b+e)/2;
-
update(left,b,mid,i,j);
-
update(right,mid+1,e,i,j);
-
}
-
int query(int node,int b,int e, int i)
-
{
-
if(i<b || i > e)
-
return 0;
-
if(i==b && i==e)
-
return tree[node];
-
int left=2*node;
-
int right=2*node+1;
-
int mid=(b+e)/2;
-
if(i<=mid)
-
return tree[node]+query(left,b,mid,i);
-
else
-
return tree[node]+query(right,mid+1,e,i);
-
}
-
int main()
-
{
-
int n,t,x,y,ans;
-
char s[mx];
-
char ch;
-
scanf(“%d”,&n);
-
getchar();
-
for(int i=1; i<=n; i++)
-
{
-
memset(tree,0,mx*3);
-
//cin>>s;
-
scanf(“%s”,&s);
-
int ln=strlen(s);
-
//int ln=s.size();
-
build_tree(1,1,ln);
-
printf(“Case %d:\n”,i);
-
scanf(“%d”,&t);
-
getchar();
-
for(int j=1; j<=t; j++)
-
{
-
scanf(“%c”,&ch);
-
getchar();
-
if(ch==’I’)
-
{
-
scanf(“%d %d”,&x,&y);
-
update(1,1,ln,x,y);
-
getchar();
-
}
-
else
-
{
-
scanf(“%d”,&x);
-
int ans=query(1,1,ln,x);
-
getchar();
-
if(ans%2==0)
-
printf(“%d\n”,s[x-1]-‘0’);
-
else
-
printf(“%d\n”,(s[x-1]-‘0’)^1);
-
}
-
}
-
}
-
return 0;
-
}
Light Oj 1087 – Diablo solution
-
#include<bits/stdc++.h>
-
using namespace std;
-
int main()
-
{
-
int n,t,p,q,x,y;
-
scanf(“%d”,&t);
-
for(int i=1;i<=t;i++)
-
{
-
printf(“Case %d:\n”,i);
-
scanf(“%d %d”,&p,&q);
-
vector<int>v;
-
for(int j=1;j<=p;j++)
-
{
-
scanf(“%d”,&x);
-
v.push_back(x);
-
}
-
for(int k=1;k<=q;k++)
-
{
-
getchar();
-
char ch;
-
scanf(“%c”,&ch);
-
if(ch==’a’)
-
{
-
scanf(“%d”,&y);
-
v.push_back(y);
-
}
-
else
-
{
-
scanf(“%d”,&y);
-
if(v.size()>=y){
-
printf(“%d\n”,v[y-1]);
-
v.erase(v.begin()+y-1);
-
}
-
else
-
printf(“none\n”);
-
}
-
}
-
}
-
return 0;
-
}
Light oj 1088 – Points in Segments solution
-
#include<bits/stdc++.h>
-
using namespace std;
-
int points[100001];
-
int main() {
-
int test, cs, n, i, a, b, q;
-
scanf(“%d”, &test);
-
for(cs = 1; cs <= test; cs++) {
-
scanf(“%d %d”, &n, &q);
-
for(i = 0; i < n; i++) scanf(“%d”, points + i);
-
printf(“Case %d:\n”, cs);
-
while(q–) {
-
scanf(“%d %d”, &a, &b);
-
a = lower_bound(points, points + n, a) – points;
-
b = upper_bound(points + a, points + n, b) – points;
-
printf(“%d\n”, b – a);
-
}
-
}
-
return 0;
-
}
Uva 11597 solution
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m=0;
while(cin>>n)
{
if(n==0)
break;
else
{
m++;
cout<<“Case “<<m<<“: “<<n/2<<endl;
}
}
return 0;
}
WelCome To My world
আমি মোঃ ইকবাল হোসেন ইকরা,জন্ম ১৯৯৪ ,২৪ অক্টোবর ।স্কুল ও কলেজ দুটোই রাজেন্দ্রপুর ক্যান্টনমেন্ট পাবলিক স্কুল ও কলেজ ।২০১০ এ এস,এস,সি আর ২০১২ তে এইচ,এস,সি পাশ করি । বর্তমানে আমি মাওলান ভাসানি বিজ্ঞান ও প্রযুক্তি বিশ্ববিদ্যালয় এ আই,সি,টি বিভাগে আধ্যায়ণ করছি । জন্ম মাদারিপুরের কালকিনি থানার উত্তর রমজান পুর গ্রামে । বর্তমানে গাজীপুরের রাজেন্দ্রপুর ক্যান্টনমেন্ট এ আছি ।