对于每一个案例,我们第一行包括两个整数n,k(1<=n<=3000,1<=k<=3e5),表示有n个数字,目标和为k。第二行输入n个整数(c1 c2..),(1<=ci<=1e5),表示每一张卡片上的数字。
如果心美能够顺利的抽出三张牌使得和恰好为k,那么输出“o hu~”,否则输出“wo yo wo yo~”。
三重循环简化为二重循环,降低时间复杂度。
code:
#include<stdio.h>
int a[300005];
int b[500005];
int main()
{ int n,k,i,j; while(scanf("%d%d",&n,&k)!=EOF) { int flag=0; for(i=0;i<n;i++) { scanf("%d",&a[i]); b[a[i]]=1; } for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(b[k-a[i]-a[j]]==1) flag=1; } } if(flag) printf("o hu~n"); else printf("wo yo wo yo~n"); } return 0;}
本文发布于:2024-02-02 21:52:59,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170688197946678.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |