RRSTONE - Editorial

Thank you. I got it now :slight_smile:

I think you need to include the case where k is 0

observe this pattern:

1-> 4 6 8 1 7 10 ; max = 10

2-> 6 4 2 9 3 0 ; max = 9

3-> 3 5 7 0 6 9 ; max = 9

4-> 6 4 2 9 3 0 ; max = 9

5-> 3 5 7 0 6 9 ; max = 9

6-> 6 4 2 9 3 0 ; max = 9


so from step 2 each step repeats after 2 cycles

I belong to the category who specify the data type if it may not be clear to the user. That is why I mentioned that it is a subjective topic.

your algorithm complexity is O(N*K)

as

1 <= N <= 10^5

0 <= K <= 10^9

so in worst case N*K can be 10^14

since you are looping from 0 to 10^14(beyond 10^9) you are getting TLE.

I mean actual test cases may not contain upto 10^14 but if it contains beyond 10^9 you may get TLE

Thanks. Made the same mistake.

CAN ANYONE HELP WHY I’M GETTING WA…
https://www.codechef.com/viewsolution/24757457

Why am I getting TLE for O(n) solution?

N , K = [int(s) for s in input().split()]
arr = [int(s) for s in input().split()]

if K ==0:
s = “”
for i in arr:
s = s + str(i)+" "
print(s)
else:
brr = [max(arr)-i for i in arr]

if K>1:
    crr = [max(brr)-i for i in brr]

if (K%2 == 1):
    s = ""
    for i in brr:
        s = s + str(i) +" "
    print(s)
else:
    s = ""
    for i in crr:
        s = s + str(i)+" "
    print(s)

Someone please tell me whats wrong with my code,its running well and giving me the correct output in my compiler but in codechef IDE its doesn’t,
here’s my code:-
#include <bits/stdc++.h>
#define mi 1000000000
#define int unsigned long long int
#define test int t;cin>>t;while(t–)
#define io ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
using namespace std;

signed main() {
io;
int n,k;
cin>>n>>k;
int x = 0 , y = 0;
int arr[mi];
int temp = INT_MIN;
for(int i = 0;i < n;i++)
{
cin>>arr[i];
if(arr[i] > temp)
{
temp = arr[i];
}
}
int ct = INT_MIN;
while(k–)
{

    for(int i = 0;i < n;i++)
     {
       arr[i] = temp - arr[i];
       if(arr[i] > ct)
       {
           ct = arr[i];
       }
     }
     temp = ct;
   }
   for(int i = 0 ;i < n;i++)
   {
       cout<<arr[i]<<" ";
   }
   
   // your code goes here
return 0;

}
INPUT:-
4 1
5 -1 7 0
OUTPUT:-
18446744073709551610 0 18446744073709551608 18446744073709551615

I got it!!!
Thanks People. :relaxed:

Glad it helped :slightly_smiling_face: :+1:

1 Like

[https://www.codechef.com/viewsolution/34943848](http://My Submission) can someone please tell which corner case I am missing?

My code is showing SIGSEVG error, though everything looks fine to me.Preformatted text Can someone pls tell why?
Thanks in advanced

#include <iostream>

using namespace std;
int max(long long int arr[],long long int n){
    long long int m=arr[0];
    for(long int i=1;i<n;i++){
        m=max(arr[i],m);
    }return m;
}
int main()
{
    long int n;
    long long int k;
    cin>>n;
    cin>>k;
    long long int arr[n]={};
    long long int li[n]={};
    for(long int i=0;i<n;i++){
        cin>>arr[i];
        li[i]=arr[i];
    }
    if(k==0){
        
    }else{
    for(int r=1;r<=k;r++){
    long long int m=max(arr,n);
    for(long int i=0;i<n;i++){
        li[i]=m-li[i];
    }}}
     for(long int i=0;i<n;i++){
         cout<<li[i]<<" ";
     }
       
    
    return 0;
}