- #include <bits/stdc++.h>
- using namespace std;
- #define mx 100001
- 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 (i > e || j < b)
- 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 p1 = query(Left, b, mid, i, j);
- int p2 = query(Right, mid + 1, e, i, j);
- return (p1+p2); //বাম এবং ডান পাশের যোগফল
- }
- 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 ts;
- scanf("%d", &ts);
- for(int p = 1; p <=ts; p++){
- printf("Case %d:\n", p);
- int n, q;
- scanf("%d%d", &n, &q);
- for(int i = 1; i <= n; i++) scanf("%d", &arr[i]);
- init(1, 1, n);
- for(int i = 0; i<q ; i++){
- int a;
- scanf("%d", &a);
- if(a == 1){
- int p;
- scanf("%d", &p);
- printf("%d\n",query(1, 1, n, p+1, p+1));
- update(1, 1, n, p+1, 0);
- }
- else if(a == 2){
- int p, v;
- scanf("%d%d", &p, &v);
- update(1, 1, n, p+1, query(1, 1, n, p+1, p+1)+v);
- }
- else if(a == 3){
- int c, b;
- scanf("%d%d", &c, &b);
- printf("%d\n",query(1, 1, n, c+1, b+1));
- }
- //for(int i = 1; i <=n; i++) cout<<arr[i]<<" ";
- //cout<<endl;
- }
- }
- return 0;
- }
Saturday, 29 July 2017
Lightoj 1112 - Curious Robin Hood
Lightoj 1245 - Harmonic Number (II)
- #include <bits/stdc++.h>
- using namespace std;
- #define llu long long unsigned
- int main(){
- int ts;
- scanf("%d", &ts);
- for(int p = 1; p <= ts; p++){
- int n;
- scanf("%d", &n);
- llu sum = 0;
- int m = sqrt(n);
- for(int i = 1; i<= m; i++) sum += (n/i);
- for(int i = 1; i<= m; i++){
- sum+= ((n/i)-(n/(i+1)))*i;
- }
- if(m==n/m) sum -= m;
- printf("Case %d: %llu\n",p, sum);
- }
- return 0;
- }
Lightoj 1082 - Array Queries
- #include <bits/stdc++.h>
- using namespace std;
- #define mx 100001
- 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 INT_MAX; //বাইরে চলে গিয়েছে
- if (b >= i && e <= j)
- return tree[node]; //রিলেভেন্ট সেগমেন্ট
- int Left = node * 2; //আরো ভাঙতে হবে
- int Right = node * 2 + 1;
- int mid = (b + e) / 2;
- int p1 = query(Left, b, mid, i, j);
- int p2 = query(Right, mid + 1, e, i, j);
- return min(p1,p2); //বাম এবং ডান পাশের যোগফল
- }
- int main()
- {
- int ts;
- scanf("%d", &ts);
- for(int p = 1; p <=ts; p++){
- printf("Case %d:\n", p);
- int n, q;
- scanf("%d%d", &n, &q);
- for(int i = 1; i <= n; i++) scanf("%d", &arr[i]);
- init(1, 1, n);
- for(int i = 0;i <q; i++){
- int a, b;
- scanf("%d%d", &a, &b);
- printf("%d\n",query(1, 1, n, a, b));
- }
- }
- return 0;
- }
Lightoj 1213 - Fantasy of a Summation
- #include <bits/stdc++.h>
- using namespace std;
- #define llu long long unsigned
- long long mod_pow(long long b, long long e, long long m) {
- long long ans = 1;
- while (e > 0) {
- if (e & 1)
- ans = (ans * b) % m;
- b = (b * b) % m;
- e >>= 1;
- }
- return ans;
- }
- int main(){
- int ts;
- scanf("%d", &ts);
- for(int p = 1; p <= ts; p++){
- llu sum = 0, n, k, m;
- scanf("%llu%llu%llu",&n, &k, &m);
- for(llu i =0; i <n; i++){
- llu a;
- scanf("%llu", &a);
- sum+= a;
- }
- llu ans = k;
- ans = (ans*(mod_pow(n, k-1, m)))%m;
- //cout<<"ans = "<<sum<<endl;
- ans = (ans*sum)%m;
- printf("Case %d: %llu\n",p, ans);
- }
- return 0;
- }
Lightoj 1338 - Hidden Secret!
http://lightoj.com/volume_showproblem.php?problem=1338
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- int tst, i, j, cndtn;
- char a[120], b[120];
- scanf("%d", &tst);
- getchar();
- for(i=1; i<=tst; i++)
- {
- int a1[26], b1[26];
- for(j=0; j<26; j++)
- {
- a1[j] = 0; b1[j] = 0;
- }
- gets(a);
- gets(b);
- for(j=0; a[j]; j++)
- {
- if(a[j]>=65 && a[j]<=90)
- a1[a[j]-65]++;
- else if(a[j]>=97 && a[j]<=122)
- a1[a[j]-97]++;
- }
- for(j=0; b[j]; j++)
- {
- if(b[j]>=65 && b[j]<=90)
- b1[b[j]-65]++;
- else if(b[j]>=97 && b[j]<=122)
- b1[b[j]-97]++;
- }
- for(j=0, cndtn=1; j<26; j++)
- {
- if(a1[j]!=b1[j])
- {
- printf("Case %d: No\n", i);
- cndtn = 0;
- break;
- }
- }
- if(cndtn==1) printf("Case %d: Yes\n", i);
- }
- return 0;
- }
Subscribe to:
Posts (Atom)
Most Featured Post
Lightoj 1159 - Batman
http://lightoj.com/volume_showproblem.php?problem=1159 problem analysis: First i thought of this as if s1, s2 and s3 are those three str...
-
http://lightoj.com/volume_showproblem.php?problem=1382 Problem analysis: This is a rare problem i wrote about so far. After much strugg...
-
http://lightoj.com/volume_showproblem.php?problem=1159 problem analysis: First i thought of this as if s1, s2 and s3 are those three str...