Skip to main content

1080 - Binary Simulation [ Light OJ ]

/**
* Problem : 1080 - Binary Simulation
* Verdict : Accepted.
* Writer : Mehadi Hasan Menon.
* Date : 25.11.16
**/
#include <iostream>
#include <cstdio>
#include <cstring>
const int mx = 1000005; // SIZE MUST 10^6 NOT 10^5
char ara[mx]; int ans;
struct node {
int prop;
}tree[mx * 3];
void update(int node, int b, int e, int i, int j)
{
if(b > j || e < i) {
return ;
}
if(b >= i && e <= j) {
tree[node].prop++;
return;
}
int mid = (b + e) / 2; int left = 2 * node; int right = 2 * node + 1;
update(left, b, mid, i, j);
update(right, mid + 1, e, i, j);
}
void quary(int node, int b, int e, int i, int carryProp = 0)
{
carryProp += tree[node].prop;
if(b > i || e < i) {
return;
}
if(b >= i && e <= i)
{
if(carryProp % 2 == 0) {
ans = ara[i - 1] - '0'; // ara[i] change to ara[i - 1];
return;
}
else {
int bit = (ara[i - 1] - '0');
bit ^= 1;
ans = bit;
return;
}
}
int mid = (b + e) / 2; int left = 2 * node; int right = 2 * node + 1;
quary(left, b, mid, i, carryProp);
quary(right, mid + 1, e, i, carryProp);
}
int main()
{
freopen("1080.txt", "r+", stdin);
int t, n, q, i, j;
char command;
scanf("%d", &t);
for(int a = 1; a <= t; a++)
{
scanf("%s", &ara);
int len = strlen(ara);
scanf("%d", &q);
getchar();
printf("Case %d:\n", a);
for(int h = 1; h <= q; h++)
{
scanf("%c", &command);
if(command == 'I') {
scanf("%d %d", &i, &j);
update(1, 1, len, i, j);
}
else if(command == 'Q') {
scanf("%d", &i);
quary(1, 1, len, i);
printf("%d\n", ans);
}
getchar();
}
for(int i = 0; i <= mx; i++) {
tree[i].prop = 0;
}
}
return 0;
}

Comments

Popular posts from this blog

উবুন্টুতে রুট পাসওয়ার্ড ভুলে তা রিকভার করার উপায় ।

যদি কেউ রুট পাসওয়ার্ড ভুলে যান তাহলে নিচের কাজ গুলো করে নতুন পাসওয়ার্ড সেট করতে পারবেন: প্রথমে পিসি রিস্টার্ট দিন । দিয়ে UP/DOWN করে kernel version সিলেক্ট করে e চাপুন । ব্ল্যাক Screen আসবে এবার একটা Space দিয়ে লিখুন “Single” [ Enter ] এরপর b চাপুন ফলাফল : লিনাক্সের Single user Mood এ চলে আসছেন । এখন লিখুন passwd root [ Enter ] এখন নতুন পাসওয়ার্ড খানা টাইপ করেন [ এন্টার ] আবার টাইপ করেন [ এন্টার ] কাজ শেষ , এবার reboot টাইপ করেন । এখন নতুন পাসওয়ার্ড দিয়ে লগইন করেন। পুনশ্চ : যদি আপনার উইন্ডোজ এর সাথে ডুয়েল বুট করা থাকে তবে এই প্রক্রিয়া কাজ করবে না ।

Fix The BIOS in this system is not fully ACPI compliant in Windows 7

এই সমস্যা সমাধান করার জন্য আপনি নিচের ধাপ গুলো অনুসরণ করুন। ধাপ ১ :  আপানর  কম্পিউটার এ উইন্ডোজ এর ডিস্ক থেকে বুট করুন । নীচের মত উইন্ডো আসলে Shift + F10 চাপুন । এর ফলে কমান্ড প্রম্প্ট ওপেন হবে। ধাপ ২ : এখন CMD তে নিচের কমান্ড গুলি ধারবাহিক ভাবে লিখুন C: bootrec /FixMbr bootrec /FixBoot bootrec /RebuildBcd exit  এখানে  C হলো যে ড্রাইভ এ উইন্ডোজ দেয়া আছে।  আপনার যদি অন্য কোনো ড্রাইভ ( D, E, F, ..... ) এ উইন্ডোজ দেয়া থাকে তবে আপনাকে C এর জায়গায় সেই ড্রাইভ এর নাম লিখতে হবে।  উপরের সব কমান্ড যদি সঠিক ভাবে বিল্ড হয় তবে আপনি আপনার কম্পিউটার রিস্টার্ট দিন।  দেখবেন আপনার সমস্যা সমাধান হয়ে গেছে :D