paiza オンラインハッカソン 第四弾(POH Lite)のコード書いてみた


プログラミング問題でスキルレベルを評価、転職するサイトのpaizaでオンライン参加型のイベント「paizaオンラインハッカソン4 Lite」が開催されたので、投稿してみました。

公式に投稿コードを公開してもOKということだったので、せっかくなのでブログにまとめました。

1,2問目はそのまま条件に総和を出すようにしています。

3問目は合計値を逐次更新していき、最大値を出力するようにしました。もう少し高速化の手法がありそうな気はしましたが(このイベント、毎回計測表示限界の0.01秒で出してる人いますし) 、とりあえず実行時間的には問題なさそうだったので、以下のコードで提出してみました。
(そもそも、コード自体がもう少し整理できそう)

ソースコード

1問目


#include <iostream>
using namespace std;
int main(void){
int n,ans=0;
cin>>n;
for(int i=0;i<n;i++)
{
int tmp;
cin>>tmp;
ans+=tmp;
}
cout<<ans<<endl;
return 0;
}

view raw

a.cpp

hosted with ❤ by GitHub

2問目


#include <iostream>
#include <algorithm>
using namespace std;
int main(void){
int n,ans=0;
cin>>n;
for(int i=0;i<n;i++)
{
int t,s,p;
cin>>t>>s>>p;
ans+=max(t-s,0)*p;
}
cout<<ans<<endl;
return 0;
}

view raw

b.cpp

hosted with ❤ by GitHub

3問目


#include <iostream>
#include <algorithm>
using namespace std;
int main(void){
int t,n,ans=0;
cin>>t>>n;
int m[n+1];
for(int i=0;i<t;i++)
{
cin>>m[i];
ans+=m[i];
}
int now=ans;
for(int i=t;i<n;i++)
{
cin>>m[i];
now=now+m[i]-m[i-t];
ans=max(ans,now);
}
cout<<ans<<endl;
return 0;
}

view raw

c.cpp

hosted with ❤ by GitHub

結果

実際にpaiza上に投稿した結果を以下にまとめました。
– https://paiza.jp/poh/enkoi-second/940fad1e
– https://paiza.jp/poh/enkoi-third/72be7929
– https://paiza.jp/poh/enkoi-ending/65140932


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください