結果
| 問題 |
No.370 道路の掃除
|
| コンテスト | |
| ユーザー |
kongarishisyamo
|
| 提出日時 | 2016-05-18 05:01:23 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 772 bytes |
| コンパイル時間 | 512 ms |
| コンパイル使用メモリ | 60,604 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-10-06 05:24:52 |
| 合計ジャッジ時間 | 1,419 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 33 WA * 1 |
ソースコード
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int N,M;
long long ans=100000008;
int D;
int pD[1000],mD[1000];
int pc,mc;
cin>>N>>M;
pc=0,mc=0;
for(int i=0;i<M;i++){
cin>>D;
if(D==0) N--;
else if(D>0) pD[pc]=D,pc++;
else mD[mc]=-D,mc++;
}
pD[pc]=0;
mD[mc]=0;
if(pc!=0) sort(pD,pD+pc+1);
if(mc!=0) sort(mD,mD+mc+1);
for(int i=max(-mc,-N);i<=min(pc,N);i++){
long long sum=-1;
if(i==0) continue;
else if(i<0&&pc-(N+i)>=0){
sum=mD[-i-1+1]*2+pD[N+i];
if(N+i==0) sum/=2;
//cout<<-i-1+1<<"-"<<N+i<<endl;
}
else if(i>0&&mc-(N-i)>=0){
sum=mD[N-i]+pD[i-1+1]*2;
if(N-i==0) sum/=2;
//cout<<N-i<<"+"<<i-1+1<<endl;
}
//cout<<i<<","<<sum<<endl;
if(sum!=-1&&sum<ans) ans=sum;
}
cout<<ans<<endl;
}
kongarishisyamo