QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#638978 | #6434. Paimon Sorting | wdbl857 | WA | 0ms | 3856kb | C++20 | 2.0kb | 2024-10-13 17:29:37 | 2024-10-13 17:29:38 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define ios ios::sync_with_stdio(0), cin.tie(0)
#define int long long
#define ll long long
#define int128 __int128
#define ull unsigned long long
#define endl "\n"
#define pi acos(-1)
#define pii pair<int, int>
const double eps = 1e-6;
const int N = 1e6 + 10, M = 1010, INF = 0x3f3f3f3f;
const int mod = 998244353;
int n;
int tr[N];
int lowbit(int x) { return x & (-x); }
void add(int x)
{
for (int i = x; i <= n; i += lowbit(i))
{
tr[i]++;
}
}
int query(int x)
{
int res = 0;
for (int i = x; i; i -= lowbit(i))
res += tr[i];
return res;
}
void solve()
{
for (int i = 0; i <= n; i++)
tr[i] = 0;
cin >> n;
int mx = 0, sum = 0;
cin >> mx;
sum = 1;
int s1 = 0, s2 = 0, s3 = 0;
int s_mx = 0;
vector<int>ans;
ans.push_back(0);
add(mx);
for (int i = 2; i <= n; i++)
{
int x;
cin >> x;
if (x < mx)
{
s1 = i - sum + 1;
int xx = query(n) - query(x);
// cout << i << ": " << n << " " << xx << endl;
if (xx > 0)
xx--;
s3 += xx;
s_mx += (sum >= 2);
}
else if (x == mx)
{
sum++;
}
else
{
sum = 1;
s1 = i - sum + 1;
s2++;
s3 += s_mx;
mx = x;
s_mx = 0;
}
int xx = query(x) - query(x - 1);
if (xx == 0)
add(x);
cout << i << ": " << s1 << " " << s2 << " " << s3 << endl;
ans.push_back(s1+s2+s3-1);
}
for(int i=0;i<ans.size()-1;i++)
{
cout<<ans[i]<<" ";
}
cout<<ans[ans.size()-1]<<endl;
}
signed main()
{
ios;
int T = 1;
cin >> T;
// cout << fixed << setprecision(8);
for (int i = 1; i <= T; i++)
{
// cout << "Case " << i << ": ";
solve();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 3856kb
input:
3 5 2 3 2 1 5 3 1 2 3 1 1
output:
2: 2 1 0 3: 3 1 0 4: 4 1 1 5: 5 2 1 0 2 3 5 7 2: 2 1 0 3: 3 2 0 0 2 4 0
result:
wrong answer 1st lines differ - expected: '0 2 3 5 7', found: '2: 2 1 0'