| 28817 | 2026-05-31 11:35:06 | LazurAndras | XOR rendezés | cpp17 | Elfogadva 100/100 | 8ms | 1280 KiB |
#include <bits/stdc++.h>
using namespace std;
void solve1(int n, vector<int>&a)
{
vector<pair<int, int>>ans;
vector<pair<int, int>>b(n);
vector<int>pos(n);
for(int i = 0; i < n; i++) b[i] = {a[i], i};
sort(b.rbegin(), b.rend());
for(int i = 0; i < n; i++)
{
int cnt = 0;
for(int j = 0; j < i; j++) if(b[j].second < b[i].second) cnt++;
pos[i] = b[i].second - cnt;
}
for(int i = 0; i < n; i++)
{
int last = n-i-1;
int k = pos[i];
for(int j = 0; j < last; j++)
{
a[j] ^= a[j+1];
ans.push_back({j+1, j+2});
}
for(int j = k-2; j >= 0; j--)
{
a[j] ^= a[j+1];
ans.push_back({j+1, j+2});
}
for(int j = k+1; j <= last; j++)
{
a[j] ^= a[j-1];
ans.push_back({j+1, j});
}
}
for(int i = n-2; i >= 0; i--)
{
a[i] ^= a[i+1];
ans.push_back({i+1, i+2});
}
cout << (int)ans.size() << '\n';
for(auto [l, r] : ans) cout << l << " " << r << '\n';
}
void solve2(int n, vector<int>&a)
{
vector<pair<int, int>>ans;
int cnt = n;
for(int k = 19; k >= 0; k--)
{
bool ok = 0;
for(int u : a) if((u >> k) & 1) ok = 1;
if(!ok) continue;
cnt--;
for(int i = 0; i < cnt; i++)
{
if((a[i] >> k) & 1)
{
if((a[i+1] >> k) & 1)
{
a[i] ^= a[i+1];
ans.push_back({i+1, i+2});
}
else
{
a[i+1] ^= a[i];
a[i] ^= a[i+1];
ans.push_back({i+2, i+1});
ans.push_back({i+1, i+2});
}
}
}
}
cout << (int)ans.size() << '\n';
for(auto [l, r] : ans) cout << l << " " << r << '\n';
}
signed main() {
ios::sync_with_stdio(false);cin.tie(nullptr);
int n, s; cin >> n >> s;
vector<int>a(n);
for(int &i : a) cin >> i;
if(s == 1) solve1(n, a);
else solve2(n, a);
}
| Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 25/25 | ||||||
| 1 | Elfogadva | 1ms | 316 KiB | ||||
| 2 | Elfogadva | 1ms | 512 KiB | ||||
| 3 | Elfogadva | 1ms | 316 KiB | ||||
| 4 | Elfogadva | 4ms | 692 KiB | ||||
| 5 | Elfogadva | 4ms | 1068 KiB | ||||
| 6 | Elfogadva | 4ms | 1012 KiB | ||||
| 7 | Elfogadva | 4ms | 692 KiB | ||||
| 8 | Elfogadva | 4ms | 824 KiB | ||||
| 9 | Elfogadva | 4ms | 1012 KiB | ||||
| 10 | Elfogadva | 4ms | 820 KiB | ||||
| 11 | Elfogadva | 4ms | 696 KiB | ||||
| 12 | Elfogadva | 4ms | 696 KiB | ||||
| 13 | Elfogadva | 6ms | 880 KiB | ||||
| 14 | Elfogadva | 6ms | 692 KiB | ||||
| 15 | Elfogadva | 6ms | 696 KiB | ||||
| subtask2 | 35/35 | ||||||
| 1 | Elfogadva | 2ms | 508 KiB | ||||
| 2 | Elfogadva | 6ms | 820 KiB | ||||
| 3 | Elfogadva | 8ms | 948 KiB | ||||
| 4 | Elfogadva | 8ms | 948 KiB | ||||
| 5 | Elfogadva | 8ms | 1028 KiB | ||||
| 6 | Elfogadva | 8ms | 948 KiB | ||||
| 7 | Elfogadva | 8ms | 1024 KiB | ||||
| 8 | Elfogadva | 7ms | 1012 KiB | ||||
| 9 | Elfogadva | 8ms | 948 KiB | ||||
| 10 | Elfogadva | 8ms | 1132 KiB | ||||
| 11 | Elfogadva | 8ms | 1280 KiB | ||||
| 12 | Elfogadva | 8ms | 948 KiB | ||||
| 13 | Elfogadva | 8ms | 948 KiB | ||||
| 14 | Elfogadva | 8ms | 1144 KiB | ||||
| 15 | Elfogadva | 8ms | 992 KiB | ||||
| subtask3 | 40/40 | ||||||
| 1 | Elfogadva | 2ms | 512 KiB | ||||
| 2 | Elfogadva | 1ms | 380 KiB | ||||
| 3 | Elfogadva | 1ms | 508 KiB | ||||
| 4 | Elfogadva | 2ms | 564 KiB | ||||
| 5 | Elfogadva | 7ms | 948 KiB | ||||
| 6 | Elfogadva | 6ms | 948 KiB | ||||
| 7 | Elfogadva | 6ms | 948 KiB | ||||
| 8 | Elfogadva | 6ms | 948 KiB | ||||
| 9 | Elfogadva | 8ms | 1012 KiB | ||||
| 10 | Elfogadva | 8ms | 948 KiB | ||||
| 11 | Elfogadva | 8ms | 1048 KiB | ||||
| 12 | Elfogadva | 8ms | 956 KiB | ||||
| 13 | Elfogadva | 7ms | 948 KiB | ||||
| 14 | Elfogadva | 7ms | 948 KiB | ||||
| 15 | Elfogadva | 8ms | 1124 KiB | ||||