| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
这么长。。。。。In Reply To:郁闷!老是WA!是否有特殊的情况?请指教。附上我的源代码。 Posted by:kingway at 2005-04-06 15:26:03 > #include <iostream>
> #define TYPE shift
>
> using namespace std;
>
> class shift {
> public :
> int start;
> int end;
> bool operator>= (shift s) {
> if (start > s.start || (start == s.start && end >=s.end)) {
> return true;
> }
> else
> return false;
> }
>
> bool operator<= (shift s) {
> if (start < s.start || (start == s.start && end <=s.end)) {
> return true;
> }
> else
> return false;
> }
>
> void operator= (shift s) {
> start = s.start;
> end = s.end;
> }
> };
>
> shift shifts[25001];
>
> // Quit sorting
>
> int Partition(TYPE list[], int low, int high) {
> TYPE pivotkey;
> list[0] = list[low];
> pivotkey = list[low];
> while (low < high) {
> while (low < high && list[high] >= pivotkey)
> --high;
> list[low] = list[high];
> while (low < high && list[low] <= pivotkey)
> ++ low;
> list[high] = list[low];
> }
> list[low] = list[0];
> return low;
> }
>
> void QuitSort(TYPE list[], int low, int high) {
> int pivotloc;
> if (low < high) {
> pivotloc = Partition(list, low, high);
> QuitSort(list, low, pivotloc - 1);
> QuitSort(list, pivotloc + 1, high);
> }
> }
>
> int main() {
>
> int n, t, i, j, count = 0;
>
> cin >> n >> t;
>
> for (i=1; i<=n; i++) {
> // cin >> shifts[i].start >> shifts[i].end;
> scanf("%d%d", &shifts[i].start, &shifts[i].end);
> }
>
> QuitSort(shifts, 1, n);
> /*
> for (i=1; i<=n; i++) {
> cout << shifts[i].start << " " << shifts[i].end << endl;
> }
> */
>
> int end = 0;
> int newend = 0;
>
> if (shifts[1].start != 1) {
> cout << "-1";
> return 0;
> }
> else {
> count++;
> for (i=1; i<=n; i++) {
> if (shifts[i].start == 1) {
> if (shifts[i].end == t) {
> cout << count;
> return 0;
> }
> end = shifts[i].end;
> }
> else
> break;
> }
> }
>
> for (; i<=n; i++) {
> if (shifts[i].start <= end + 1) {
> if (newend < shifts[i].end) {
> newend = shifts[i].end;
> }
> }
> else {
> if (newend == 0) {
> cout << "-1";
> return 0;
> }
> else {
> count ++;
>
> if (newend == t) {
> cout << count;
> return 0;
> }
> end = newend + 1;
> //cout << "!!!" << end <<endl;
> newend = 0;
> i--;
> }
> }
> }
>
> if (newend == t) {
> cout << (count + 1);
> }
> else {
> cout << "-1";
> }
>
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator