結果
問題 | No.245 貫け! |
ユーザー | IL_msta |
提出日時 | 2015-07-17 23:45:21 |
言語 | C++11 (gcc 11.4.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 3,060 bytes |
コンパイル時間 | 672 ms |
コンパイル使用メモリ | 86,472 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-08 09:43:49 |
合計ジャッジ時間 | 7,246 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 16 ms
5,248 KB |
testcase_01 | AC | 25 ms
5,376 KB |
testcase_02 | AC | 27 ms
5,376 KB |
testcase_03 | AC | 17 ms
5,376 KB |
testcase_04 | AC | 28 ms
5,376 KB |
testcase_05 | AC | 51 ms
5,376 KB |
testcase_06 | AC | 45 ms
5,376 KB |
testcase_07 | AC | 11 ms
5,376 KB |
testcase_08 | WA | - |
testcase_09 | WA | - |
testcase_10 | WA | - |
testcase_11 | WA | - |
testcase_12 | WA | - |
testcase_13 | WA | - |
testcase_14 | WA | - |
testcase_15 | WA | - |
testcase_16 | WA | - |
testcase_17 | WA | - |
testcase_18 | WA | - |
testcase_19 | WA | - |
ソースコード
#define _USE_MATH_DEFINES #include <iostream> #include <iomanip> #include <algorithm> #include <cmath> #include <string> //#include <array> #include <list> #include <queue> #include <vector> #include <complex> #include <set> #include <map> ///////// #define REP(i, x, n) for(int i = x; i < n; i++) #define rep(i,n) REP(i,0,n) #define P(p) cout<<(p)<<endl; #define PII pair<int,int> ///////// typedef long long LL; typedef long double LD; ///////// using namespace::std; ///////// int N; int a[100],b[100],c[100],d[100]; int AA,BB,CC; int ans = 0,tans; void setP(int A,int B,int C,int D){ AA = D-B; BB = A-C; CC = (A-C)*B+(D-B)*A; return; } int solve(){ int ans = 0; int s,t,D; double X,Y; tans = 0; rep(i,N){ s = (c[i]-a[i])*(a[i]*d[i]-b[i]*c[i]); t = CC; D = (d[i]-b[i])*BB-(a[i]-c[i])*AA; if(AA==0 && BB == 0){ } else if( AA == 0){ Y = CC/BB; if( (b[i] <= Y && Y <= d[i])||(d[i] <= Y && Y <= b[i]) ){ ++tans; } }else if( BB == 0){ X = CC/AA; if( (a[i] <= X && X <= c[i] ) || (c[i] <= X && X <= a[i]) ){ ++tans; } } else if( D == 0){ if(a[i]==c[i]){ //x=a[i] Y = (CC-AA*a[i])/BB; if( (b[i] <= Y && d[i] <= Y) || (d[i] <= Y && Y <= b[i]) ){ ++tans; } }else if(b[i]==d[i]){ //y=b[i] X = (CC-BB*b[i])/AA; if( (a[i] <= X && X <= c[i]) || (c[i] <= X && X <= a[i]) ){ ++tans; } }else{ if( (d[i]-b[i] == AA && a[i]-c[i] == BB && CC == (c[i]-a[i])*(a[i]*d[i]-b[i]*c[i]) )|| (d[i]-b[i] == -AA && a[i]-c[i] == -BB && -CC == (c[i]-a[i])*(a[i]*d[i]-b[i]*c[i]) ) ){ ++tans; } } }else{ X = s*BB-(a[i]-c[i])*t; Y = (d[i]-b[i])*t-s*AA; X /= D; Y /= D; if( ( (a[i] <= X && X <= c[i]) || (c[i] <= X && X <= a[i]) ) && ( (b[i] <= Y && Y <= d[i]) || (d[i] <= Y && Y <= b[i]) ) ){ ++tans; } } } ans = max(ans,tans); return ans; } int main(void){ std::cin.tie(0); std::ios::sync_with_stdio(false); std::cout << std::fixed;// //cout << setprecision(10);// cin>>N; rep(i,N){ cin>>a[i]>>b[i]>>c[i]>>d[i]; } int ANS=0,temp; int A,B,C,D; A=-200; D=-200; for(int B=-200;B<=200;++B){ for(int C=-200;C<=200;++C){ setP(A,B,C,D); temp = solve(); ANS = max(ANS,temp); } } A=200; D=-200; for(int B=-200;B<=200;++B){ for(int C=-200;C<=200;++C){ setP(A,B,C,D); temp = solve(); ANS = max(ANS,temp); } } A=-200; D=200; for(int B=-200;B<=200;++B){ for(int C=-200;C<=200;++C){ setP(A,B,C,D); temp = solve(); ANS = max(ANS,temp); } } A=200; D=200; for(int B=-200;B<=200;++B){ for(int C=-200;C<=200;++C){ setP(A,B,C,D); temp = solve(); ANS = max(ANS,temp); } } A=-200; C=200; for(int B=-200;B<=200;++B){ for(int D=-200;D<=200;++D){ setP(A,B,C,D); temp = solve(); ANS = max(ANS,temp); } } B=-200; D=200; for(int A=-200;A<=200;++A){ for(int C=-200;C<=200;++C){ setP(A,B,C,D); temp = solve(); ANS = max(ANS,temp); } } P(ANS); return 0; }