feat: improved TLE solution and generator

This commit is contained in:
2025-11-27 22:17:20 -03:00
parent 127830f0c6
commit 8d8c0af21f
126 changed files with 182 additions and 162 deletions

View File

@@ -19,10 +19,23 @@ int main()
cin >> N;
cin >> T;
nums.resize(N);
for (int i = 0; i < N; i++)
int sum = 0;
for (int i = 0; i < N; i++) {
cin >> nums[i];
sum += nums[i];
if (solve(0, 0)) {
if (nums[i] == T) {
cout << "PERFEITO!" << endl;
return 0;
}
}
if (sum == T) {
cout << "PERFEITO!" << endl;
return 0;
}
if (sum > T && solve(0, 0)) {
cout << "PERFEITO!";
} else {
cout << "IMPOSSIVEL!";

View File

@@ -8,7 +8,7 @@ const int MAX_N = 1000;
const int MIN_T = 1;
const int MAX_T = 10000;
const int MIN_NI = 1;
const int MAX_NI = 100;
const int MAX_NI = 1000;
const int rnd_test_n = 100;
@@ -55,11 +55,10 @@ string rnd_test(int i){
int min_n = MIN_N;
int max_n = MAX_N;
int min_t = MIN_T;
int max_t = MAX_T;
if(i<rnd_test_n / 3){
max_n = MAX_N/3;
min_t = 1;
min_t = 10;
}
else if(i<rnd_test_n / 2){
max_n = MAX_N/2;
@@ -70,7 +69,7 @@ string rnd_test(int i){
int n = rnd.next(min_n, max_n);
int t = rnd.next(min_t, MAX_T);
return(output_tc(t, genRandomArray(n)));
return(output_tc(t, genRandomArray(n, t/10)));
}
vector<string> generate_random_tests() {
@@ -82,12 +81,17 @@ vector<string> generate_random_tests() {
}
string extreme_test_1(){
return(output_tc(MAX_T, genRandomArray(MAX_N)));
return(output_tc(MAX_N, genRandomArray(MAX_N, MAX_N/2, MAX_N-1)));
}
string extreme_test_2(){
return(output_tc(MAX_T - 1, genRandomArray(MAX_N, MAX_NI)));
}
vector<string> generate_extreme_tests(){
vector<string> tests;
tests.push_back(extreme_test_1());
tests.push_back(extreme_test_2());
return tests;
}

View File

@@ -13,7 +13,7 @@ int main(int argc, char* argv[]) {
inf.readEoln();
for (int i = 0; i < n; i++) {
if (i != 0) inf.readSpace();
inf.readInt(1, 100, "ni");
inf.readInt(1, 1000, "ni");
}
inf.readEoln();
inf.readEof();