Hello Programmers In this post, you will know how to solve the Array Rotation Codechef Solution. The Problem Code: COF1MED1
One more thing to add, don’t directly look for the solutions, first try to solve the problems of Codechef by yourself. If you find any difficulty after trying several times, then you can look for solutions.
Problem
You are given an array A of N integers. You are to fulfill M queries. Each query has one of the following three types:
- L d : Rotate the array A to the left by d units.
- R d : Rotate the array A to the right by d units.
- Q d : Query the element currently at the d-th index in the array, after all earlier rotations have been carried out.
Input:
The first line contains two numbers – N and M respectively.
The next line contains N space separated Integers, denoting the array A.
Each of the following M lines contains a query in the one of the forms described above.
Output:
For each query of type Q output the answer on a separate line.
Constraints
- 1≤N≤1000001≤N≤100000
- 1≤M≤1000001≤M≤100000
- 1≤d≤N1≤d≤N, in all the queries
- 1≤elementsofA≤10000001≤elementsofA≤1000000
- The array A and the queries of the type R follow 1-based indexing.
Example
Sample Input 1
5 5
5 4 3 3 9
Q 1
L 4
Q 5
R 3
Q 2
Sample Output 1
5 3 3
Array Rotation CodeChef Solutions in JAVA
import java.util.Arrays; import java.util.Scanner; import java.util.stream.Collectors; public class Main { static final int MODULUS = 1_000_000_007; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] A = new int[N]; for (int i = 0; i < A.length; ++i) { A[i] = sc.nextInt(); } int Q = sc.nextInt(); int[] x = new int[Q]; for (int i = 0; i < x.length; ++i) { x[i] = sc.nextInt(); } System.out.println(solve(A, x)); sc.close(); } static String solve(int[] A, int[] x) { int[] result = new int[x.length]; result[0] = multiplyMod(Arrays.stream(A).reduce(Main::addMod).getAsInt(), 2); for (int i = 1; i < result.length; ++i) { result[i] = multiplyMod(result[i - 1], 2); } return Arrays.stream(result).mapToObj(String::valueOf).collect(Collectors.joining("\n")); } static int mod(long x) { return (int) ((x % MODULUS + MODULUS) % MODULUS); } static int addMod(int x, int y) { return mod(x + y); } static int multiplyMod(int x, int y) { return mod((long) x * y); } }
Array Rotation CodeChef Solutions in CPP
#include<bits/stdc++.h> using namespace std; #define ll long long const int mod = 1000000007; //-------------------------------------------------------- void solve(){ ll int n; cin>>n; ll int sum=0; while(n--){ ll int x; cin>>x; sum=(sum+x+mod)%mod; } ll int q; cin>>q; while(q--){ ll int x; cin>>x; sum=(2*sum)%mod; cout<<sum<<"\n"; } return ; } int main(){ ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0); srand(chrono::high_resolution_clock::now().time_since_epoch().count()); #ifndef ONLINE_JUDGE freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); #endif solve(); }
Array Rotation CodeChef Solutions in Python
import io, os, time,math from sys import stdin ,stdout def take_input(): return stdin.readline() def display_arr(arr): stdout.write(" ".join(map(str, arr)) + "\n") def display_num(num): stdout.write(str(num)+ "\n") mod = 10**9+7 n = int(take_input()) arr = list(map(int,take_input().split())) test = int(take_input()) queries = list(map(int,take_input().split())) summe = 0 for i in range(n): summe += arr[i] summe = summe%mod for _ in range(test): summe = (summe+summe)%mod print(summe)
Disclaimer: The above Problem (Array Rotation) is generated by CodeChef but the solution is provided by BrokenProgrammers. This tutorial is only for Educational and Learning purposes.
Note:- I compile all programs, if there is any case program is not working and showing an error please let me know in the comment section. If you are using adblocker, please disable adblocker because some functions of the site may not work correctly.