結果
| 問題 |
No.282 おもりと天秤(2)
|
| コンテスト | |
| ユーザー |
nasadigital
|
| 提出日時 | 2015-09-20 08:51:49 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 1,980 ms / 5,000 ms |
| コード長 | 1,861 bytes |
| コンパイル時間 | 1,467 ms |
| コンパイル使用メモリ | 163,576 KB |
| 実行使用メモリ | 25,604 KB |
| 平均クエリ数 | 267.12 |
| 最終ジャッジ日時 | 2024-07-16 21:33:02 |
| 合計ジャッジ時間 | 22,280 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 24 |
ソースコード
#include <bits/stdc++.h>
#define FOR(a,b) for(int a=0;a<b;a++)
using namespace std;
typedef long long ll;
char rev(char a){
if(a=='<')
return '>';
if (a=='>')
return '<';
return '=';
}
int main()
{
int n;
cin>>n;
char mapa[n+1][n+1];
memset(mapa,'?',sizeof(mapa));
for(int ctr1=0;ctr1<1900;ctr1++){
bool used[n+1];
memset(used,false,sizeof(used));
vector<int> queries;
for(int ctr2=1;ctr2<=n;ctr2++){
if(!used[ctr2])
for(int ctr3=1;ctr3<=n;ctr3++){
if(mapa[ctr2][ctr3]=='?' && !used[ctr3] && ctr3!=ctr2){
queries.push_back(ctr2);
queries.push_back(ctr3);
mapa[ctr2][ctr3]=mapa[ctr3][ctr2]='.';
used[ctr2]=used[ctr3]=true;
break;
}
}
}
if(queries.size()==0)
break;
while(queries.size()<2*n)
{
queries.push_back(0);
queries.push_back(0);
}
cout<<"? ";
for(int ctr2=0;ctr2<n;ctr2++) cout<<queries[2*ctr2]<<" "<<queries[2*ctr2+1]<<" ";
cout<<endl;
for(int ctr2=0;ctr2<n;ctr2++){
char a;
cin>>a;
mapa[queries[2*ctr2]][queries[2*ctr2+1]]=a;
mapa[queries[2*ctr2+1]][queries[2*ctr2]]=rev(a);
}
}
int rez[n];
memset(rez,-1,sizeof(rez));
for(int ctr1=1;ctr1<=n;ctr1++){
int pomali=0;
for(int ctr2=1;ctr2<=n;ctr2++){
if(ctr1==ctr2)
continue;
if(mapa[ctr1][ctr2]=='>')
pomali++;
}
while(rez[pomali]!=-1)
pomali++;
rez[pomali]=ctr1;
}
cout<<"! ";
for(int ctr1=0;ctr1<n;ctr1++) cout<<rez[ctr1]<<" ";
cout<<endl;
return 0;
}
nasadigital