快来签到呀Description
受疫情影响,霍格沃茨的学生们也在家上网课。konomikonomikonomi是格兰芬多学院应用魔法与术士构造专业的学生今天他要上nnn门课程,第i门课有一个签到截止时间aia_iai,konomikonomikonomi必须在截止前释放魔法进行签到,但konomikonomikonomi的法杖坏掉了,不能直接释放魔法,他只能通过构造魔法阵进行签到,构造第iii门课的魔法阵需要bib_ibi的时间,konomikonomikonomi想要在每门课签到截止之前完成该门课的魔法阵构造,请帮他计算一下他能不能做到。
Input
第一行一个整数nnn,表示有nnn门课
第二行nnn个整数,第iii个数表示第iii门课签到截止时间aia_iai
第三行nnn个整数,第iii个数表示构造第i门课的魔法阵需要的时间bib_ibi。
1≤n≤1000,0<ai,bi<1e91 \leq n \leq 1000, 0 <a_i, b_i <1e91≤n≤1000,0<ai,bi<1e9
Output
如果konomikonomikonomi能完成所有课程的签到,输出"Tarantollegra",否则输出"Unforgivable Curses"。
Source
Chter
- 注意:这一题所给的 每们课的签到时间,并不是按 顺序时间来的(巨弱的我我为啥没想到),我们可以用结构题来维护数据,在用前缀和数组来维护总的时间
代码
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<string>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
#define db double
#define ll long long
const int Len = 1e6 + 5;
struct Node
{
ll tim, sp;
bool operator < (Node a) const
{
return tim < a.tim;
}
} node[Len];
int sum[Len];
int main()
{
//freopen("A.txt","r",stdin);
int n;
scanf("%d", &n);
for(int i = 1; i <= n; i ++)
scanf("%lld", &node[i].tim);
for(int i = 1; i <= n; i ++)
scanf("%lld", &node[i].sp);
sort(node + 1, node + 1 + n);
for(int i = 1; i <= n; i ++)
{
sum[i] = sum[i-1] + node[i].sp;
}
int flag = 1;
for(int i = 1; i <= n; i ++)
{
if(node[i].tim < sum[i])
{
flag = 0;
break;
}
}
if(flag)
printf("Tarantollegra\n");
else
printf("Unforgivable Curses\n");
return 0;
}