結果
問題 | No.325 マンハッタン距離2 |
ユーザー |
|
提出日時 | 2020-03-05 13:39:19 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 1,000 ms |
コード長 | 955 bytes |
コンパイル時間 | 541 ms |
コンパイル使用メモリ | 67,872 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-14 01:13:29 |
合計ジャッジ時間 | 1,322 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 24 |
コンパイルメッセージ
main.cpp:40:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type] 40 | main() | ^~~~
ソースコード
#include<iostream>#include<algorithm>using namespace std;long d;long f(long x1,long y1,long x2,long y2){if(x2<x1||y2<y1)return 0;if(d<abs(x1)+abs(y1))return 0;else if(d<min(abs(x1)+abs(y2),abs(x2)+abs(y1))){long t=d-abs(x1)-abs(y1)+1;return t*(t+1)/2;}else if(d<max(abs(x1)+abs(y2),abs(x2)+abs(y1))){long L=abs(x1)+abs(y2),R=abs(x2)+abs(y1);if(L<R){long t=L-abs(x1)-abs(y1);long u=d-L+1;return t*(t+1)/2+u*(y2-y1+1);}else{long t=R-abs(x1)-abs(y1);long u=d-R+1;return t*(t+1)/2+u*(x2-x1+1);}}else if(d<abs(x2)+abs(y2)){long t=abs(x2)+abs(y2)-d;return (x2-x1+1)*(y2-y1+1)-t*(t+1)/2;}else{return (x2-x1+1)*(y2-y1+1);}}main(){long x1,y1,x2,y2;cin>>x1>>y1>>x2>>y2>>d;long ans=0;for(int r=0;r<4;r++){ans+=f(max(x1,1L),max(y1,0L),x2,y2);long tmp=x1;x1=y1;y1=-x2;x2=y2;y2=-tmp;}if(x1<=0&&0<=x2&&y1<=0&&0<=y2)ans++;cout<<ans<<endl;}