How to solve TLE error in my code problem link :- https://www.codechef.com/problems/CARSELL

#include<bits/stdc++.h>

using namespace std;

#define mod (1000000007)

int main(){

int t;

cin>>t;

while (t!=0)

{   

    int n;

    cin>>n;

    int a[n];

    for (int i = 0; i < n; i++)

        {cin>>a[i];}

    sort(a,a+n);

    int year=0,sum=0;

    for (int i = n-1; i >=0; i--)

    {   if (a[i]-year>0)

    {



        sum=sum+(a[i]-year)%mod;

        year++;

    }

    }

  cout<<sum%1000000007<<endl;

  t--;

} 

return 0;

}

Can you link the question too ? It’s very difficult to optimise a code without seeing the question :neutral_face:

2 Likes

you are not decrementing the variable t …It should be t-- instead of t != 0

tried that but still not working

Can you please format your code properly? I dunno why most people don’t do it.

1 Like

use this lk to access code

Is it still TLE, or WA. Because I think it might over flow! Try doing sum%=MOD everytime you add something to it.

Or better, as suggested, just use long long! Code

Try this:
#include<bits/stdc++.h>

using namespace std;

#define mod (1000000007)

int main(){

int t;

cin>>t;

while (t–)

{

int n;

cin>>n;

long long a[n];

for (int i = 0; i < n; i++)

    {
		cin>>a[i];
	}

sort(a,a+n);

int year=0;
long long sum = 0;
for (int i = n-1; i >=0; i--)

{   if (a[i]-year>0)

{

    sum=(sum+a[i]-year)%mod;

    year++;

}

else

{

    break;

}



}

cout<<sum%mod<<endl;

}

return 0;

}

Use long long instead of int… this will work

It worked thanks!!

Well you can use the following way also:

static int compute_maximum_profit(std :: vector <int> & car_price, const int n) {
    std :: sort(car_price.rbegin(), car_price.rend()); // Sorts the data in decreasing order.
    int max_profit = 0;
    for(int i = 0; i < n; ++i) {
        if(car_price[i] - i > 0) {
            car_price[i] -= i;
            max_profit = (max_profit + car_price[i]) % MOD;
        }
    }
    return max_profit;
}

Complete Code Link: Competitive-Programming/Code-Chef/Sell-All-The-Cars at master · strikersps/Competitive-Programming · GitHub

Using long long might help!
Below is my code :
#include<bits/stdc++.h>
using namespace std;
using ll = long long;

#define mod 1000000007

void shammi() {
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#endif
}

int main() {
	shammi();
	ll t; cin >> t;
	while (t--) {
		ll n, sum = 0; cin >> n;
		ll P[n];
		for (ll i = 0; i < n; i++) cin >> P[i];
		sort(P, P + n);
		for (ll i = n - 1; i >= 0; i--) {
			if ((P[i] - (n - i - 1)) >= 0) {
				sum += (P[i] - (n - i - 1));
				sum = sum % mod;
			}
		}
		cout << sum % mod << "\n";
	}
	return 0;
}

use vector and perform sort(a.rbegin(), a.rend()); don’t maintain extra variable year the sum should be max(0, a[i]-i); and write sum%= mod. last mod is not required. Array seems less optimized