結果
| 問題 |
No.334 門松ゲーム
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-10-14 21:36:30 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 31 ms / 2,000 ms |
| コード長 | 2,106 bytes |
| コンパイル時間 | 1,930 ms |
| コンパイル使用メモリ | 175,016 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-10-14 21:36:40 |
| 合計ジャッジ時間 | 2,282 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 13 |
ソースコード
#include<bits/stdc++.h>
#define Add(x,y) (x+y>=mod)?(x+y-mod):(x+y)
#define lowbit(x) x&(-x)
#define pi pair<ll,ll>
#define pii pair<ll,pair<ll,ll>>
#define iip pair<pair<ll,ll>,ll>
#define ppii pair<pair<ll,ll>,pair<ll,ll>>
#define fi first
#define se second
#define full(l,r,x) for(auto it=l;it!=r;it++) (*it)=x
#define Full(a) memset(a,0,sizeof(a))
#define open(s1,s2) freopen(s1,"r",stdin),freopen(s2,"w",stdout);
#define For(i,l,r) for(register int i=l;i<=r;i++)
#define _For(i,l,r) for(register int i=r;i>=l;i--)
using namespace std;
typedef double db;
typedef unsigned long long ull;
typedef long long ll;
bool Begin;
const ll N=13,M=N*N*N;
inline ll read(){
ll x=0,f=1;
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-')
f=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
x=(x<<1)+(x<<3)+(c^48);
c=getchar();
}
return x*f;
}
inline void write(ll x){
if(x<0){
putchar('-');
x=-x;
}
if(x>9)
write(x/10);
putchar(x%10+'0');
}
struct Node{
ll x,y,z;
bool operator<(const Node&rhs)const{
if(x^rhs.x)
return x<rhs.x;
if(y^rhs.y)
return y<rhs.y;
return z<rhs.z;
}
};
ll n,cnt;
ll a[N],x[M],y[M],z[M];
vector<Node> ans;
bool f[N];
bool dfs(){
bool F=0,H=0;
For(i,1,cnt){
if(f[x[i]]||f[y[i]]||f[z[i]])
continue;
F=1;
f[x[i]]=f[y[i]]=f[z[i]]=1;
if(!dfs())
H=1;
f[x[i]]=f[y[i]]=f[z[i]]=0;
}
if(!F)
return 0;
return H;
}
bool End;
int main(){
n=read();
For(i,1,n)
a[i]=read();
For(i,1,n){
For(j,i+1,n){
For(k,j+1,n){
if(a[i]==a[j]||a[j]==a[k]||a[i]==a[k])
continue;
if(max({a[i],a[j],a[k]})==a[j]||min({a[i],a[j],a[k]})==a[j]){
++cnt;
x[cnt]=i;
y[cnt]=j;
z[cnt]=k;
}
}
}
}
For(i,1,cnt){
f[x[i]]=f[y[i]]=f[z[i]]=1;
if(!dfs())
ans.push_back({x[i],y[i],z[i]});
f[x[i]]=f[y[i]]=f[z[i]]=0;
}
if(!ans.size()){
puts("-1");
exit(0);
}
sort(ans.begin(),ans.end());
write(ans[0].x-1);
putchar(' ');
write(ans[0].y-1);
putchar(' ');
write(ans[0].z-1);
putchar(' ');
cerr<<'\n'<<abs(&Begin-&End)/1048576<<"MB";
return 0;
}