feat: improved TLE solution and generator
This commit is contained in:
@@ -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!";
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user