头条前两题AC代码

#include<iostream>
#include<memory.h>
#include<stdio.h>
#include<vector>
#include<algorithm>
#include<stdio.h>
using namespace std;
struct point{
int x;
int y;
bool operator< (const point &p){
if(p.x==x) return y<p.y;
else return x<p.x;
}
};
int main(){
int n;
cin>>n;
point a[500005];
for(int i=0;i<n;i++){
scanf("%d %d",&a[i].x,&a[i].y);
}
sort(a,a+n);
int maxy=a[n-1].y;
vector<int >v1;
vector<int >v2;
for(int i=n-1;i>=0;i--){
if(i==n-1) {
v1.push_back(a[i].x);
v2.push_back(a[i].y);
else if(a[i].y<maxy) continue;
else if(a[i].y>=maxy){
maxy=a[i].y;
v1.push_back(a[i].x);
v2.push_back(a[i].y);
}
}
for(int i=v1.size()-1;i>=0;i--){
//cout<<v1[i]<<" "<<v2[i]<<endl;
printf("%d %d\n",v1[i],v2[i]);
}
return 0;
注:cin输入会超时
#include<iostream>
//#include<vector>
#include<algorithm>
using namespace std;
long long int ans;
long long int a[500001];
//vector<long long int >v1;
void dfs(long long int start,long long int end){
if(start>end) return ;
if(start==end) {
long long int anss=a[start]*a[start];
if(anss>ans) ans=anss;
        return ;
}
long long int sum=0;
long long int minn=1000000;
long long int flag=-1;
for(int i=start;i<=end;i++){
if(a[i]<minn) {
minn=a[i];
flag=i; 
   }
       sum+=a[i];
}
    long long int anss=sum*minn;
if(anss>ans) ans=anss;
dfs(start,flag-1);
dfs(flag+1,end);
return ;
}

int main(){
int n;
cin>>n;
long long int min=1000000;
    long long int flag=0;
    long long int sum=0;
for(int i=0;i<n;i++){
scanf("%lld",&a[i]);
sum+=a[i];
if(a[i]<min) {
min=a[i];
flag=i;
}
}
    ans=sum*min;
dfs(0,flag-1);
dfs(flag+1,n-1);
cout<<ans;
}
全部评论
第二题解释下么。。没弄懂
点赞 回复 分享
发布于 2017-08-23 15:48
没用scanf,一直没过。。。学习了
点赞 回复 分享
发布于 2017-08-23 15:31
非常nice
点赞 回复 分享
发布于 2017-08-23 15:24
膜拜大神。
点赞 回复 分享
发布于 2017-08-22 22:16
膜拜大神,观摩代码
点赞 回复 分享
发布于 2017-08-22 22:14
没用scanf,**了
点赞 回复 分享
发布于 2017-08-22 22:13
摩拜下
点赞 回复 分享
发布于 2017-08-22 21:52
膜拜下大神……
点赞 回复 分享
发布于 2017-08-22 21:50
第二题复杂度是不是不对啊
点赞 回复 分享
发布于 2017-08-22 21:49
真的cin会超时啊==我还以为没影响呢。。。
点赞 回复 分享
发布于 2017-08-22 21:49
同学你好!首先感谢你参加今日头条笔试,如果在笔试过程中遇到任何问题,可以通过申诉通道与我们联系。情况核对属实后,可以有二次笔试的机会,成绩以最后一次考试为准。【申诉通道】campushr@bytedance.com,请在正文简要说明笔试遇到的问题,邮件标题为: 笔试申诉+岗位+姓名+***话,我们会尽快回复~
点赞 回复 分享
发布于 2017-08-22 21:40

相关推荐

用户64975461947315:这不很正常吗,2个月开实习证明,这个薪资也还算合理,深圳Java好多150不包吃不包住呢,而且也提前和你说了没有转正机会,现在贼多牛马公司骗你说毕业转正,你辛辛苦苦干了半年拿到毕业证,后面和你说没hc了😂
点赞 评论 收藏
分享
小浪_Coding:个人技能一条测试没有
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务