[模擬] P1167 刷題
阿新 • • 發佈:2019-01-26
日期模擬好像一直很弱
敲了好久
bool ly(int x) //leapyear { return ( (x % 4 == 0 && x % 100 != 0) || x % 400 == 0); } if(ly(ya)) //leapyear month month[2] = 29; else month[2] = 28; if(ly(ya)) //sum of leapyear days sum += 24 * 60 * 366; else sum += 24 * 60 * 365;
//#pragma GCC optimize(2) #include <cstdio> #include <iostream> #include <cstdlib> #include <cmath> #include <cctype> #include <string> #include <cstring> #include <algorithm> #include <stack> #include <queue> #include <set> #include <map> #include <ctime> #include <vector> #include <fstream> #include <list> #include <iomanip> #include <numeric> using namespace std; typedef long long ll; const int MAXN = 1e6 + 10; int arr[MAXN]; int month[13] = {31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; bool ly(int x) { return ( (x % 4 == 0 && x % 100 != 0) || x % 400 == 0); } int main() { //ios::sync_with_stdio(false); //cin.tie(0); cout.tie(0); int N, ans = 0; cin>>N; for(int i = 0; i < N; i++) scanf("%d", &arr[i]); sort(arr, arr + N); int ya, yb, ma, mb, da, db, ha, hb, mia, mib; char cu; cin>>ya>>cu>>ma>>cu>>da>>cu>>ha>>cu>>mia; cin>>yb>>cu>>mb>>cu>>db>>cu>>hb>>cu>>mib; //printf("%d %d %d %d %d\n", ya, ma, da, ha, mia); ll sum = 0, tdm = (hb * 60 + mib) - (ha * 60 + mia); while(ya < yb - 1) { if(ly(ya)) sum += 24 * 60 * 366; else sum += 24 * 60 * 365; ya++; } while( !(ya == yb && ma == mb && da == db) ) { sum += 24 * 60; if(ly(ya)) month[2] = 29; else month[2] = 28; da++; if(da == month[ma] + 1) { ma++; da = 1; } if(ma == 13) { ya++; ma = 1; } } sum += tdm; //cout<<sum<<endl; for(int i = 0; i < N; i++) { sum -= arr[i]; if(sum >= 0) ans++; else break; } cout<<ans<<endl; return 0; } /* 2 1 1 2007-06-22-12:40 2007-06-23-12:00 */