1. 程式人生 > >now code——處女座的期末復習

now code——處女座的期末復習

quest 否則 題目 一行 bsp bool 需要 nod sin

題目描述

快要期末考試了,處女座現在有n門課程需要考試,每一門課程需要花ai小時進行復習,考試的起始時間為bi,處女座為了考試可以不吃飯不睡覺,處女座想知道他能否復習完所有的科目(即在每一門考試之前復習完該科目)。每一門課的考試時間都為兩小時。

輸入描述:

第一行一個整數n

第二行n個整數a1,a2,…,an,表示每門課需要復習的時間

第三行n個整數b1,b2,…,bn,表示每門課考試的時間

1<=n<=105

0<=ai<=109 0<=bi<=109

輸出描述:

如果處女座能復習完,輸出”YES”,否則輸出”NO”
示例1

輸入

復制
3
0 1 1
2 6 4

輸出

復制
YES

說明

在0-1小時復習第2門課,
在1-2小時復習第3門課,
在2-4小時考第1門課,
在4-6小時考第3門課,
在6-8小時考第2門課

備註:

考試時不能復習,保證考試時間不會重疊。

復習可以拆開,只要復習時間夠了即可。
#include <bits/stdc++.h>
#define ll long long
using namespace std;
struct node{
    int time,test;
}a[100005];
bool cmp(node x,node y){
    return x.test<y.test;
}
int
main() { int n; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&a[i].time); } for(int i=0;i<n;i++){ scanf("%d",&a[i].test); } sort(a,a+n,cmp); int timesum=a[0].test-a[0].time,sign=0; for(int i=1;i<n;i++){ if(timesum<a[i].time){ sign
=1; break; } else{ timesum+=(a[i].test-a[i-1].test-2); timesum-=a[i].time; } } if(sign){ cout<<"NO"<<endl; }else{ cout<<"YES"<<endl; } return 0; }

now code——處女座的期末復習