Beispiel #1
0
// BEGIN KAWIGIEDIT TESTING
// Generated by KawigiEdit 2.1.4 (beta) modified by pivanof
bool KawigiEdit_RunTest(int testNum, vector <int> p0, vector <int> p1, vector <int> p2, int p3, bool hasAnswer, int p4) {
	cout << "Test " << testNum << ": [" << "{";
	for (int i = 0; int(p0.size()) > i; ++i) {
		if (i > 0) {
			cout << ",";
		}
		cout << p0[i];
	}
	cout << "}" << "," << "{";
	for (int i = 0; int(p1.size()) > i; ++i) {
		if (i > 0) {
			cout << ",";
		}
		cout << p1[i];
	}
	cout << "}" << "," << "{";
	for (int i = 0; int(p2.size()) > i; ++i) {
		if (i > 0) {
			cout << ",";
		}
		cout << p2[i];
	}
	cout << "}" << "," << p3;
	cout << "]" << endl;
	GraphInversions *obj;
	int answer;
	obj = new GraphInversions();
	clock_t startTime = clock();
	answer = obj->getMinimumInversions(p0, p1, p2, p3);
	clock_t endTime = clock();
	delete obj;
	bool res;
	res = true;
	cout << "Time: " << double(endTime - startTime) / CLOCKS_PER_SEC << " seconds" << endl;
	if (hasAnswer) {
		cout << "Desired answer:" << endl;
		cout << "\t" << p4 << endl;
	}
	cout << "Your answer:" << endl;
	cout << "\t" << answer << endl;
	if (hasAnswer) {
		res = answer == p4;
	}
	if (!res) {
		cout << "DOESN'T MATCH!!!!" << endl;
	} else if (double(endTime - startTime) / CLOCKS_PER_SEC >= 2) {
		cout << "FAIL the timeout" << endl;
		res = false;
	} else if (hasAnswer) {
		cout << "Match :-)" << endl;
	} else {
		cout << "OK, but is it right?" << endl;
	}
	cout << "" << endl;
	return res;
}
// BEGIN CUT HERE
int main( int argc, char* argv[] )
{

    {
        int AARRAY[] = {0,1,2};
        vector <int> A( AARRAY, AARRAY+ARRSIZE(AARRAY) );
        int BARRAY[] = {1,2,0};
        vector <int> B( BARRAY, BARRAY+ARRSIZE(BARRAY) );
        int VARRAY[] = {40,50,60};
        vector <int> V( VARRAY, VARRAY+ARRSIZE(VARRAY) );
        GraphInversions theObject;
        eq(0, theObject.getMinimumInversions(A, B, V, 3),0);
    }

    {
        int AARRAY[] = {0,1,2,3};
        vector <int> A( AARRAY, AARRAY+ARRSIZE(AARRAY) );
        int BARRAY[] = {1,2,3,0};
        vector <int> B( BARRAY, BARRAY+ARRSIZE(BARRAY) );
        int VARRAY[] = {60,40,50,30};
        vector <int> V( VARRAY, VARRAY+ARRSIZE(VARRAY) );
        GraphInversions theObject;
        eq(1, theObject.getMinimumInversions(A, B, V, 3),1);
    }

    {
        int AARRAY[] = {0,1,2,3,0};
        vector <int> A( AARRAY, AARRAY+ARRSIZE(AARRAY) );
        int BARRAY[] = {1,2,3,0,4};
        vector <int> B( BARRAY, BARRAY+ARRSIZE(BARRAY) );
        int VARRAY[] = {10,10,10,5,5};
        vector <int> V( VARRAY, VARRAY+ARRSIZE(VARRAY) );
        GraphInversions theObject;
        eq(2, theObject.getMinimumInversions(A, B, V, 5),1);
    }

    {
        int AARRAY[] = {0,1,2,3,0,2};
        vector <int> A( AARRAY, AARRAY+ARRSIZE(AARRAY) );
        int BARRAY[] = {1,2,3,0,4,5};
        vector <int> B( BARRAY, BARRAY+ARRSIZE(BARRAY) );
        int VARRAY[] = {10,2,5,3,7,1};
        vector <int> V( VARRAY, VARRAY+ARRSIZE(VARRAY) );
        GraphInversions theObject;
        eq(3, theObject.getMinimumInversions(A, B, V, 6),-1);
    }

    {
        int AARRAY[] = {5,7,7,5,5,7,6,4};
        vector <int> A( AARRAY, AARRAY+ARRSIZE(AARRAY) );
        int BARRAY[] = {2,0,2,0,1,4,7,3};
        vector <int> B( BARRAY, BARRAY+ARRSIZE(BARRAY) );
        int VARRAY[] = {15,10,5,30,22,10,5,2};
        vector <int> V( VARRAY, VARRAY+ARRSIZE(VARRAY) );
        GraphInversions theObject;
        eq(4, theObject.getMinimumInversions(A, B, V, 6),3);
    }

    {
        int AARRAY[] = {494, 657, 514, 18, 261, 590, 552, 460, 121, 176, 7, 665, 227, 355, 681, 121, 113, 542, 73, 95, 640, 520, 319, 675, 511, 164, 516, 128, 544, 445, 124, 419, 613, 222, 576, 142, 174, 309, 128, 249, 602, 358, 555, 49, 239, 537, 292, 572, 202, 588, 187, 156, 197, 534, 5, 67, 74, 16, 231, 463, 483, 511, 550, 244, 371, 651, 303, 174, 516, 523, 549, 213, 348, 340, 236, 682, 68, 69, 189, 579, 174, 285, 308, 34, 181, 16, 77, 578, 265, 466, 51, 27, 12, 72, 174, 246, 91, 689, 414, 683, 320, 309, 377, 155, 128, 451, 622, 463, 216, 43, 299, 18, 420, 228, 494, 346, 469, 145, 219, 420, 579, 624, 666, 494, 59, 159, 600, 65, 39, 424, 627, 57, 454, 92, 445, 599, 457, 71, 112, 534, 643, 137, 395, 102, 283, 395, 540, 292, 533, 149, 15, 399, 119, 251, 330, 289, 27, 484, 548, 611, 203, 390, 644, 195, 127, 562, 635, 420, 87, 175, 492, 275, 183, 683, 75, 472, 205, 144, 555, 194, 632, 161, 262, 31, 326, 302, 354, 582, 249, 10, 498, 29, 368, 97, 135, 228, 127, 433, 272, 224, 477, 319, 565, 502, 383, 192, 684, 600, 559, 421, 180, 463, 187, 558, 306, 357, 445, 390, 161, 557, 615, 536, 41, 579, 94, 516, 7, 637, 51, 211, 224, 239, 353, 405, 175, 232, 391, 686, 628, 618, 570, 111, 269, 690, 45, 347, 336, 13, 605, 116, 82, 613, 129, 453, 128, 342, 414, 67, 426, 24, 49, 435, 69, 664, 307, 227, 188, 368, 563, 292, 371, 67, 302, 385, 126, 415, 225, 74, 108, 266, 317, 558, 323, 118, 292, 449, 280, 316, 63, 123, 249, 503, 437, 419, 564, 152, 537, 545, 486, 569, 542, 627, 407, 504, 213, 602, 592, 61, 179, 319, 639, 596, 662, 576, 583, 685, 365, 75, 544, 553, 19, 10, 610, 67, 499, 131, 655, 532, 436, 279, 97, 180, 571, 327, 220, 467, 288, 193, 595, 133, 435, 374, 123, 250, 145, 206, 331, 298, 390, 109, 74, 241, 623, 589, 476, 32, 517, 228, 176, 605, 505, 245, 383, 243, 272, 479, 107, 75, 448, 343, 115, 263, 435, 643, 296, 669, 225, 297, 327, 328, 177, 693, 577, 605, 466, 287, 461, 78, 530, 251, 333, 137, 195, 62, 239, 568, 641, 439, 205, 480, 33, 173, 625, 401, 129, 23, 660, 364, 488, 332, 489, 44, 60, 178, 28, 53, 6, 531, 105, 435, 415, 388, 539, 27, 268, 181, 314, 605, 591, 151, 53, 506, 590, 181, 292, 238, 582, 120, 202, 187, 121, 448, 407, 433, 570, 303, 440, 295, 558, 468, 608, 89, 14, 293, 390, 583, 97, 628, 170, 110, 591, 357, 605, 146, 371, 207, 513, 370, 552, 560, 529, 380, 594, 338, 145, 628, 421, 72, 671, 472, 352, 278, 350, 644, 621, 465, 586, 483, 398, 296, 558, 576, 512, 533, 87, 678, 670, 267, 36, 78, 605, 480, 240, 423, 241, 23, 167, 130, 480, 507, 659, 690, 430, 547, 509, 140, 358, 28, 229, 279, 622, 623, 527, 617, 620, 251, 378, 650, 100, 638, 577, 424, 343, 175, 305, 219, 450, 435, 167, 160, 567, 28, 66, 305, 289, 577, 685, 341, 294, 459, 511, 136, 335, 551, 168, 506, 631, 269, 476, 536, 558, 132, 390, 518, 576, 262, 663, 270, 536, 365, 685, 481, 441, 327, 402, 75, 516, 414, 560, 610, 676, 438, 455, 157, 73, 373, 504, 316, 231, 606, 110, 480, 474, 463, 56, 24, 668, 228, 235, 528, 78, 358, 448, 360, 55, 569, 648, 209, 603, 515, 630, 15, 638, 22, 42, 622, 236, 472, 2, 364, 134, 644, 133, 311, 28, 470, 511, 355, 557, 289, 322, 631, 408, 379, 254, 436, 78, 47, 233, 228, 125, 294, 232, 195, 508, 456, 554, 269, 605, 605, 172, 679, 673, 494, 65, 603, 110, 572, 58, 416, 351, 581, 389, 637, 677, 435, 473, 242, 153, 301, 184, 390, 190, 551, 478, 300, 32, 627, 140, 491, 112, 93, 668, 138, 344, 360, 264, 420, 404, 85, 206, 358, 114, 215};
        vector <int> A( AARRAY, AARRAY+ARRSIZE(AARRAY) );
        int BARRAY[] = {398, 357, 338, 587, 72, 252, 475, 35, 86, 646, 79, 597, 626, 414, 264, 221, 516, 463, 185, 614, 371, 621, 525, 481, 431, 629, 585, 546, 427, 347, 171, 147, 172, 518, 234, 378, 500, 451, 54, 637, 273, 516, 27, 162, 395, 216, 464, 575, 645, 489, 477, 685, 36, 264, 26, 64, 8, 18, 674, 634, 291, 495, 229, 659, 101, 466, 325, 280, 387, 192, 79, 687, 54, 618, 332, 204, 113, 0, 278, 561, 334, 450, 165, 394, 479, 106, 265, 109, 58, 139, 411, 617, 400, 260, 661, 665, 239, 247, 612, 566, 213, 520, 282, 26, 59, 159, 200, 417, 313, 198, 298, 330, 556, 99, 598, 497, 273, 688, 169, 425, 90, 216, 75, 357, 361, 128, 381, 571, 139, 627, 337, 538, 74, 301, 654, 390, 679, 381, 667, 653, 611, 556, 482, 204, 383, 659, 617, 521, 46, 576, 253, 197, 318, 437, 456, 585, 451, 651, 557, 410, 179, 527, 292, 93, 34, 159, 183, 515, 596, 240, 154, 667, 222, 256, 74, 628, 382, 487, 423, 463, 617, 252, 366, 341, 160, 121, 256, 237, 660, 582, 409, 596, 356, 241, 179, 392, 1, 155, 472, 571, 208, 686, 319, 402, 149, 231, 152, 602, 277, 402, 456, 604, 98, 327, 222, 63, 298, 633, 171, 80, 159, 461, 445, 390, 583, 30, 463, 485, 476, 384, 41, 96, 506, 484, 442, 576, 477, 605, 524, 658, 556, 452, 123, 28, 129, 93, 528, 389, 327, 214, 682, 230, 379, 673, 173, 74, 372, 28, 35, 305, 494, 558, 680, 7, 426, 605, 41, 33, 301, 41, 429, 104, 25, 636, 561, 284, 167, 386, 4, 464, 360, 481, 446, 390, 358, 445, 27, 74, 535, 281, 75, 346, 199, 324, 626, 638, 378, 137, 241, 332, 20, 197, 432, 679, 543, 543, 109, 382, 108, 530, 471, 689, 420, 115, 175, 221, 160, 223, 47, 690, 152, 234, 604, 396, 680, 443, 552, 347, 37, 346, 369, 41, 510, 129, 628, 312, 529, 263, 68, 158, 117, 56, 210, 171, 559, 196, 239, 416, 377, 7, 619, 367, 436, 445, 141, 9, 511, 309, 87, 108, 356, 593, 607, 382, 69, 628, 253, 436, 185, 69, 656, 89, 614, 393, 88, 408, 323, 373, 161, 340, 441, 254, 519, 358, 112, 678, 349, 458, 649, 557, 577, 127, 428, 453, 651, 155, 282, 159, 501, 631, 149, 467, 360, 488, 477, 298, 606, 197, 558, 11, 555, 461, 651, 74, 166, 637, 327, 32, 338, 308, 562, 47, 357, 643, 273, 413, 353, 133, 49, 352, 245, 490, 382, 186, 378, 375, 83, 623, 609, 628, 434, 691, 7, 377, 201, 602, 554, 18, 354, 192, 23, 58, 541, 425, 321, 182, 642, 263, 518, 574, 315, 605, 143, 526, 541, 329, 351, 431, 378, 103, 3, 89, 180, 639, 264, 301, 597, 2, 536, 360, 153, 686, 183, 259, 496, 374, 9, 292, 17, 383, 406, 609, 385, 602, 362, 383, 478, 653, 146, 573, 292, 602, 572, 276, 647, 304, 204, 322, 651, 478, 597, 76, 594, 357, 5, 258, 239, 116, 690, 161, 161, 601, 163, 70, 69, 159, 551, 383, 211, 445, 234, 38, 363, 472, 109, 139, 234, 538, 129, 332, 150, 3, 111, 310, 21, 418, 671, 557, 108, 693, 562, 137, 314, 493, 83, 78, 43, 52, 97, 617, 506, 679, 7, 522, 327, 384, 347, 368, 75, 580, 274, 131, 511, 249, 12, 404, 144, 358, 122, 191, 123, 332, 173, 401, 477, 452, 218, 447, 239, 290, 651, 318, 81, 374, 452, 692, 148, 403, 540, 540, 286, 212, 48, 35, 639, 262, 511, 610, 265, 114, 205, 425, 103, 93, 192, 429, 462, 420, 617, 248, 219, 271, 217, 131, 358, 388, 345, 514, 184, 397, 674, 444, 465, 359, 434, 97, 255, 685, 303, 512, 31, 672, 567, 40, 563, 154, 239, 15, 384, 375, 651, 110, 36, 50, 339, 226, 32, 581, 474, 629, 231, 422, 390, 183, 172, 498, 482, 433, 84, 329, 257, 464, 59, 618, 389, 176, 151, 651, 382, 530, 376, 324, 569, 34, 651, 412, 41, 616, 584, 425, 161, 87, 652, 678};
        vector <int> B( BARRAY, BARRAY+ARRSIZE(BARRAY) );
        int VARRAY[] = {757, 501, 271, 25, 58, 902, 368, 509, 368, 252, 874, 218, 775, 789, 421, 348, 620, 620, 588, 588, 588, 436, 65, 65, 290, 847, 847, 368, 316, 316, 340, 585, 585, 411, 411, 411, 782, 162, 944, 902, 540, 188, 188, 123, 128, 770, 113, 113, 515, 397, 397, 397, 397, 74, 74, 804, 548, 548, 815, 23, 23, 947, 660, 187, 187, 250, 717, 892, 259, 531, 416, 416, 416, 416, 590, 995, 799, 97, 97, 97, 106, 303, 777, 342, 342, 342, 9, 392, 392, 922, 913, 840, 580, 812, 812, 812, 569, 425, 79, 513, 968, 70, 720, 720, 767, 767, 459, 616, 216, 40, 271, 634, 254, 801, 69, 458, 458, 150, 975, 975, 975, 281, 281, 763, 528, 46, 408, 410, 217, 964, 111, 111, 521, 521, 521, 296, 461, 373, 373, 373, 979, 14, 784, 592, 62, 62, 62, 604, 604, 75, 75, 176, 48, 35, 35, 225, 147, 481, 156, 156, 386, 386, 652, 157, 157, 896, 896, 896, 772, 439, 439, 243, 555, 555, 80, 953, 365, 213, 213, 517, 711, 711, 67, 724, 706, 484, 602, 228, 309, 309, 775, 775, 321, 207, 207, 716, 285, 718, 704, 413, 793, 834, 246, 246, 525, 671, 671, 404, 301, 454, 501, 501, 501, 746, 746, 746, 680, 680, 445, 762, 762, 432, 449, 698, 378, 787, 506, 506, 829, 535, 662, 740, 858, 255, 33, 1, 1, 625, 625, 996, 996, 754, 330, 140, 753, 895, 895, 149, 78, 884, 908, 908, 908, 825, 60, 60, 962, 289, 279, 477, 477, 477, 186, 806, 806, 697, 959, 959, 629, 629, 882, 882, 882, 28, 28, 28, 28, 757, 921, 467, 467, 560, 560, 938, 938, 344, 641, 733, 733, 302, 731, 667, 333, 813, 242, 242, 249, 158, 158, 146, 146, 174, 98, 98, 441, 830, 732, 861, 219, 317, 565, 816, 532, 552, 552, 315, 367, 367, 850, 850, 114, 114, 114, 654, 238, 558, 32, 657, 20, 51, 51, 184, 203, 203, 269, 694, 437, 437, 933, 814, 134, 427, 427, 31, 866, 866, 866, 294, 469, 204, 5, 5, 5, 791, 791, 609, 609, 701, 539, 936, 936, 56, 56, 21, 21, 736, 990, 122, 87, 87, 605, 84, 84, 853, 853, 853, 345, 422, 702, 702, 702, 551, 631, 631, 550, 44, 44, 44, 233, 233, 395, 112, 112, 112, 984, 984, 175, 356, 26, 472, 472, 57, 91, 91, 486, 486, 486, 879, 17, 17, 323, 323, 172, 169, 873, 873, 549, 549, 19, 708, 897, 82, 509, 218, 218, 218, 391, 623, 992, 743, 494, 575, 575, 265, 811, 10, 50, 571, 482, 267, 267, 969, 181, 181, 181, 452, 842, 622, 622, 832, 545, 369, 414, 904, 39, 789, 534, 534, 152, 152, 446, 252, 252, 678, 153, 153, 915, 308, 615, 668, 668, 668, 30, 298, 596, 276, 465, 867, 102, 102, 102, 125, 177, 639, 991, 991, 173, 957, 196, 196, 196, 848, 788, 788, 497, 18, 18, 805, 523, 942, 760, 760, 807, 346, 593, 433, 471, 415, 415, 124, 248, 144, 144, 538, 495, 129, 844, 844, 970, 650, 650, 967, 489, 489, 90, 90, 645, 58, 58, 443, 192, 192, 734, 734, 224, 183, 508, 508, 508, 508, 329, 329, 121, 121, 725, 725, 170, 170, 785, 785, 533, 533, 533, 142, 145, 145, 689, 347, 931, 838, 857, 930, 647, 717, 762, 189, 592, 904, 166, 377, 77, 171, 924, 172, 605, 689, 260, 621, 563, 500, 151, 284, 629, 258, 265, 838, 791, 438, 389, 714, 925, 109, 662, 310, 622, 873, 844, 106, 214, 258, 513, 801, 569, 399, 868, 508, 645, 346, 552, 551, 205, 716, 298, 615, 172, 471, 388, 308, 515, 969, 185, 805, 698, 566, 298, 281, 841, 972, 90, 629, 261, 402, 340, 54, 69, 495, 804, 433, 900, 383, 276, 477, 873, 471, 291, 74, 182, 326, 744, 367, 996, 532, 920, 38, 513, 382, 690, 578, 155, 58, 748, 474, 465, 254, 937, 819, 629, 552, 158, 714, 821, 105, 841, 903, 702, 163, 437, 26, 708, 434, 155, 144, 965, 887, 980, 297, 67, 443, 409, 964, 804, 259, 439, 123};
        vector <int> V( VARRAY, VARRAY+ARRSIZE(VARRAY) );
        GraphInversions theObject;
        eq(5, theObject.getMinimumInversions(A, B, V, 365),-1);
    }
    return 0;
}