結果
問題 | No.334 門松ゲーム |
ユーザー | nmnmnmnmnmnmnm |
提出日時 | 2016-01-06 00:25:22 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 5 ms / 2,000 ms |
コード長 | 1,976 bytes |
コンパイル時間 | 776 ms |
コンパイル使用メモリ | 92,032 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-19 11:33:46 |
合計ジャッジ時間 | 1,639 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 13 |
ソースコード
#include <algorithm> #include <cfloat> #include <climits> #include <cmath> #include <complex> #include <cstdio> #include <cstdlib> #include <cstring> #include <functional> #include <iostream> #include <map> #include <memory> #include <queue> #include <set> #include <sstream> #include <stack> #include <string> #include <utility> #include <vector> using namespace std; #define sz size() #define pb push_back #define mp make_pair #define fi first #define se second #define all(c) (c).begin(), (c).end() #define rep(i,a,b) for(int i=(a);i<(b);++i) #define clr(a, b) memset((a), (b) ,sizeof(a)) #define MOD 1000000007 int n; vector<int> v; int d[30]; int isKadomatsu(int a, int b, int c){ if((a<b&&a>c)||(a>b&&a<c)||(c<a&&c>b)||(c>a&&c<b))return 1; return 0; } int f(int d[30], int c){ vector<int> v1; rep(i,0,n){ if(d[i]==0){ v1.pb(i); } } // 0 if(c == 0){ int ret = 1; rep(i,0,v1.sz){ rep(j,i+1,v1.sz){ rep(k,j+1,v1.sz){ if(1==isKadomatsu(v[v1[i]],v[v1[j]],v[v1[k]])){ d[v1[i]]=1;d[v1[j]]=1;d[v1[k]]=1; ret &= f(d,1-c); d[v1[i]]=0;d[v1[j]]=0;d[v1[k]]=0; } } } } return ret; } // 1 else{ int ret = 0; rep(i,0,v1.sz){ rep(j,i+1,v1.sz){ rep(k,j+1,v1.sz){ if(1==isKadomatsu(v[v1[i]],v[v1[j]],v[v1[k]])){ d[v1[i]]=1;d[v1[j]]=1;d[v1[k]]=1; ret |= f(d,1-c); d[v1[i]]=0;d[v1[j]]=0;d[v1[k]]=0; } } } } return ret; } } int main(){ cin>>n; rep(i,0,n){ int a; cin>>a; v.pb(a); } clr(d,0); rep(a,0,n){ rep(b,a+1,n){ rep(c,b+1,n){ if(1==isKadomatsu(v[a],v[b],v[c])){ d[a]=1;d[b]=1;d[c]=1; if(0==f(d,1)){ cout << a << " " << b << " " << c << endl; return 0; } d[a]=0;d[b]=0;d[c]=0; } } } } cout << -1 << endl; return 0; }