problemscpp
A collection of my answers to algorithm problems in c++.
载入中...
搜索中...
未找到
pat::a::a7_2 命名空间参考

7-2 The Second Run of Quicksort 更多...

函数

bool isFirstRun (int start, int end)
 
int main (istream &cin, ostream &cout)
 
 TEST (a7_2, case1)
 

变量

int lmax [100010]
 
int lmax2 [100010]
 
int rmin [100010]
 
int rmin2 [100010]
 
int vec [100010]
 

详细描述

7-2 The Second Run of Quicksort

函数说明

◆ isFirstRun()

bool pat::a::a7_2::isFirstRun ( int start,
int end )

在文件 pat.cpp5101 行定义.

5101 {
5102 if(start >= end) {
5103 return true;
5104 }
5105 lmax2[start] = vec[start];
5106 rmin2[end] = vec[end];
5107 for(int i = start + 1; i <= end; i++) {
5108 lmax2[i] = max(vec[i], lmax2[i - 1]);
5109 }
5110 for(int i = end - 1; i >= start; i--) {
5111 rmin2[i] = min(vec[i], rmin2[i + 1]);
5112 }
5113 for(int i = start; i <= end; i++) {
5114 if(vec[i] >= lmax2[i] && vec[i] <= rmin2[i]) {
5115 return true;
5116 }
5117 }
5118 return false;
5119 }
int rmin2[100010]
int vec[100010]
int lmax2[100010]

引用了 lmax2, rmin2 , 以及 vec.

被这些函数引用 main().

◆ main()

int pat::a::a7_2::main ( istream & cin,
ostream & cout )

在文件 pat.cpp5121 行定义.

5121 {
5122 int k;
5123 cin >> k;
5124 while(k-- != 0) {
5125 int n;
5126 cin >> n;
5127 for(int i = 0; i < n; i++) {
5128 cin >> vec[i];
5129 }
5130 bool ok = false;
5131 lmax[0] = vec[0];
5132 rmin[n - 1] = vec[n - 1];
5133 for(int i = 1; i < n; i++) {
5134 lmax[i] = max(vec[i], lmax[i - 1]);
5135 }
5136 for(int i = n - 2; i >= 0; i--) {
5137 rmin[i] = min(vec[i], rmin[i + 1]);
5138 }
5139 for(int i = 0; i < n; i++) {
5140 if(vec[i] >= lmax[i] && vec[i] <= rmin[i]) {
5141 if(isFirstRun(0, i - 1) && isFirstRun(i + 1, n - 1)) {
5142 ok = true;
5143 break;
5144 }
5145 }
5146 }
5147 if(ok) {
5148 cout << "Yes" << endl;
5149 } else {
5150 cout << "No" << endl;
5151 }
5152 }
5153 return 0;
5154 }
int rmin[100010]
int lmax[100010]
bool isFirstRun(int start, int end)

引用了 isFirstRun(), lmax, rmin , 以及 vec.

被这些函数引用 TEST().

◆ TEST()

pat::a::a7_2::TEST ( a7_2 ,
case1  )

在文件 pat_test.cpp2316 行定义.

2316 {
2317 istringstream in("4\n"
2318 "8\n"
2319 "5 2 16 12 28 60 32 72\n"
2320 "8\n"
2321 "2 16 5 28 12 60 32 72\n"
2322 "8\n"
2323 "2 12 16 5 28 32 72 60\n"
2324 "8\n"
2325 "5 2 12 28 16 32 72 60");
2326 auto out = ostringstream();
2327 main(in, out);
2328 ASSERT_EQ("Yes\n"
2329 "Yes\n"
2330 "Yes\n"
2331 "No\n",
2332 out.str());
2333 }
int main(istream &cin, ostream &cout)

引用了 main().

变量说明

◆ lmax

int pat::a::a7_2::lmax[100010]

在文件 pat.cpp5096 行定义.

被这些函数引用 main().

◆ lmax2

int pat::a::a7_2::lmax2[100010]

在文件 pat.cpp5098 行定义.

被这些函数引用 isFirstRun().

◆ rmin

int pat::a::a7_2::rmin[100010]

在文件 pat.cpp5097 行定义.

被这些函数引用 main().

◆ rmin2

int pat::a::a7_2::rmin2[100010]

在文件 pat.cpp5099 行定义.

被这些函数引用 isFirstRun().

◆ vec

int pat::a::a7_2::vec[100010]

在文件 pat.cpp5095 行定义.

被这些函数引用 isFirstRun() , 以及 main().