Эта функция дает мне SIGTSTP (TLE), кто-нибудь может исправить код для меня? - PullRequest
0 голосов
/ 03 апреля 2020
#include<bits/stdc++.h>
using namespace std;

long long count(vector<long long> a){
    long long pro=0;
    sort(a.begin(), a.end(), greater<long long>());

    for(int i=0;i<a.size();i++){
        if(a[i]-i > 0){
            pro = (pro+ a[i] - i)%1000000007;
        }
        else{
            break;
        }
    }

    return pro;
}

int main(){
    int t,n,i;
    long long in,cnt=0;
    vector<long long> a;

    cin>>t;

    while(t--){
        a.clear();
        cin>>n;

        for(i=0;i<n;i++){
            cin>>in;
            a.push_back(in);
        }

        cout<<count(a)<<endl;
    }

    return 0;
}

Мы являемся массивом из нескольких предметов (а), мы должны продавать их, чтобы получить максимальную прибыль, но с каждой продажей оставшиеся цены снижаются на 1 каждый.

1 Ответ

0 голосов
/ 03 апреля 2020

В зависимости от вашего вектора a, pro может переполниться во время вычисления. Чтобы убедиться, что это не так, вы можете взять модуль по каждому l oop:

if(a[i]-i > 0){
            pro = (pro + a[i] - i)%100000007;
        }
...