QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#373681 | #2833. Hamilton | PetroTarnavskyi | RE | 1ms | 3840kb | C++20 | 1.6kb | 2024-04-01 22:16:34 | 2024-04-01 22:16:35 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define FOR(i, a, b) for(int i = (a); i < (b); i++)
#define RFOR(i, b, a) for(int i = (b) - 1; i >= (a); i--)
#define SZ(a) (int)a.size()
#define ALL(a) a.begin(), a.end()
#define PB push_back
#define MP make_pair
#define F first
#define S second
typedef long long LL;
typedef vector<int> VI;
typedef pair<int, int> PII;
typedef double db;
int n;
vector<string> g;
bool ok(const VI& a)
{
int mx = 0;
FOR(i, 0, SZ(a))
{
int cur = a[i];
int nx = a[(i + 1) % SZ(a)];
int val = g[cur][nx] - '0';
//cerr << val << "\n";
if(val < mx)
return 0;
mx = max(mx, val);
}
return 1;
}
void solve()
{
g.resize(n);
FOR(i, 0, n)
cin >> g[i];
VI ans = {0, 1, 2};
if(!ok(ans))
ans = {1, 2, 0};
if(!ok(ans))
ans = {2, 0, 1};
assert(ok(ans));
//FOR(i, 0, 3)
// cerr << ans[i] << " ";
//cerr << "\n";
FOR(i, 3, n)
{
VI cands = {0, 1, i - 1, i};
FOR(j, 0, i)
{
int pr = ans[(j + i - 1) % i];
int cur = ans[j];
int nx = ans[(j + 1) % i];
if(g[cur][pr] == g[cur][nx])
continue;
cands.PB(j);
cands.PB(j + 1);
}
for(int pos : cands)
{
VI nans = ans;
nans.insert(nans.begin() + pos, i);
if(ok(nans))
{
ans = nans;
break;
}
}
assert(SZ(ans) == i + 1);
}
FOR(i, 0, n)
{
if(i)
cout << " ";
cout << ans[i] + 1;
}
cout << "\n";
//cerr << "\n";
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
while(cin >> n)
solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3612kb
input:
3 001 000 100 4 0000 0000 0000 0000
output:
1 2 3 4 1 2 3
result:
ok 2 cases.
Test #2:
score: 0
Accepted
time: 0ms
memory: 3840kb
input:
3 000 000 000 3 010 100 000 3 011 100 100 3 011 101 110
output:
1 2 3 2 3 1 2 3 1 1 2 3
result:
ok 4 cases.
Test #3:
score: 0
Accepted
time: 0ms
memory: 3580kb
input:
4 0000 0000 0000 0000 4 0000 0001 0000 0100 4 0100 1010 0100 0000 4 0111 1000 1000 1000 4 0010 0011 1101 0110 4 0111 1011 1100 1100 4 0111 1011 1101 1110 4 0000 0011 0101 0110 4 0101 1010 0100 1000 4 0011 0011 1100 1100 4 0010 0001 1000 0100
output:
4 1 2 3 4 1 2 3 3 4 1 2 4 2 3 1 4 1 2 3 1 4 2 3 4 1 2 3 3 1 4 2 3 4 1 2 1 4 2 3 4 1 2 3
result:
ok 11 cases.
Test #4:
score: 0
Accepted
time: 0ms
memory: 3544kb
input:
5 00000 00000 00000 00000 00000 5 00001 00000 00000 00000 10000 5 00010 00010 00000 11000 00000 5 00000 00001 00001 00001 01110 5 00001 00001 00001 00001 11110 5 00101 00100 11011 00100 10100 5 01111 10011 10000 11000 11000 5 00011 00011 00011 11101 11110 5 01101 10111 11001 01001 11110 5 00111 0011...
output:
5 4 1 2 3 5 4 1 2 3 5 1 2 3 4 4 1 2 3 5 4 1 2 3 5 5 4 1 2 3 2 3 4 5 1 1 2 3 5 4 1 5 4 2 3 5 1 4 2 3 5 4 1 2 3 2 3 4 5 1 2 3 4 5 1 2 5 4 3 1 5 4 2 3 1 3 1 4 5 2 4 5 1 2 3 1 4 2 5 3 1 2 4 3 5 1 2 5 4 3 1 2 3 5 4 3 5 1 4 2 1 2 4 5 3 5 4 1 2 3 4 2 3 5 1 4 3 5 1 2 4 1 2 3 5 5 4 1 2 3 5 1 2 4 3 5 4 1 2 3 ...
result:
ok 34 cases.
Test #5:
score: -100
Runtime Error
input:
6 000000 000000 000000 000000 000000 000000 6 000000 000000 000001 000000 000000 001000 6 010000 100100 000000 010000 000000 000000 6 000100 000000 000100 101010 000100 000000 6 000100 000000 000100 101011 000100 000100 6 001000 001000 110111 001000 001000 001000 6 001100 000100 100100 111011 000100...