| ||||||||||
| 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 | |||||||||
郁闷!老是WA!是否有特殊的情况?请指教。附上我的源代码。#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