279122026-05-13 17:30:59KristófSzimmetrikus sorozatcpp17Elfogadva 100/100245ms12096 KiB
#include <bits/stdc++.h>
#include <vector>
#include <numeric>
using namespace std;

struct dsu
{
int n;
vector<int> id;
//vector<int> s;
void build(int size)
	{
	n=size;
	id.resize(n+1);
	//s.resize(n+1,1);
	iota(id.begin(),id.end(),0);
	}
int find(int a)
	{
	if(id[a]==a)return a;
	else return id[a]=find(id[a]);
	}
void unio(int a,int b)
	{
	a=find(a);
	b=find(b);
	id[a]=b;
	}
};

int main() {
	dsu k;
	
	int n;
	cin>>n;
	vector<pair<int,int>> a(n);
	vector<int> idtoval(n);
	map<int,int> vis;
	int cnt=1;
	for(int i=0;i<n;i++)
		{
		cin>>a[i].first;
		if(vis[a[i].first]){a[i].second=vis[a[i].first];}
		else
			{
			idtoval[cnt]=a[i].first;
			a[i].second=cnt;
			vis[a[i].first]=cnt++;
			}
		}
	k.build(cnt);
	vector<pair<int,int>> ans;
	for(int l=0,r=n-1;l<r;l++,r--)
		{
		if(k.find(a[l].second)!=k.find(a[r].second))
			{
			int x=idtoval[k.find(a[r].second)];
			int y=idtoval[k.find(a[l].second)];
			if(y<x)
				{
				
				k.unio(a[r].second, a[l].second);
				ans.push_back({x,y});
				}
			else
				{
				k.unio(a[l].second, a[r].second);
				ans.push_back({y,x});
				}
			}
		}
	cout<<ans.size()<<"\n";
	for(auto [x,y]:ans)cout<<x<<" "<<y<<"\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Elfogadva93ms5036 KiB
subtask29/9
3Elfogadva3ms316 KiB
4Elfogadva1ms500 KiB
5Elfogadva1ms316 KiB
6Elfogadva1ms432 KiB
7Elfogadva2ms316 KiB
subtask314/14
8Elfogadva1ms316 KiB
9Elfogadva1ms316 KiB
10Elfogadva1ms500 KiB
11Elfogadva2ms316 KiB
12Elfogadva1ms316 KiB
13Elfogadva1ms316 KiB
subtask425/25
14Elfogadva1ms508 KiB
15Elfogadva2ms316 KiB
16Elfogadva3ms316 KiB
17Elfogadva3ms564 KiB
18Elfogadva3ms444 KiB
19Elfogadva3ms404 KiB
20Elfogadva3ms316 KiB
21Elfogadva4ms508 KiB
subtask522/22
22Elfogadva155ms8780 KiB
23Elfogadva162ms9840 KiB
24Elfogadva171ms9388 KiB
25Elfogadva150ms8928 KiB
26Elfogadva150ms8880 KiB
27Elfogadva156ms9896 KiB
28Elfogadva163ms9900 KiB
29Elfogadva146ms8916 KiB
30Elfogadva134ms8880 KiB
31Elfogadva148ms9792 KiB
32Elfogadva148ms9708 KiB
33Elfogadva133ms8720 KiB
34Elfogadva127ms8808 KiB
35Elfogadva144ms9896 KiB
36Elfogadva140ms9904 KiB
37Elfogadva128ms8880 KiB
subtask630/30
38Elfogadva2ms316 KiB
39Elfogadva94ms5048 KiB
40Elfogadva3ms316 KiB
41Elfogadva1ms500 KiB
42Elfogadva1ms316 KiB
43Elfogadva1ms432 KiB
44Elfogadva2ms316 KiB
45Elfogadva1ms316 KiB
46Elfogadva1ms316 KiB
47Elfogadva1ms500 KiB
48Elfogadva2ms316 KiB
49Elfogadva1ms316 KiB
50Elfogadva1ms316 KiB
51Elfogadva1ms508 KiB
52Elfogadva2ms316 KiB
53Elfogadva3ms316 KiB
54Elfogadva3ms564 KiB
55Elfogadva3ms444 KiB
56Elfogadva3ms404 KiB
57Elfogadva3ms316 KiB
58Elfogadva4ms508 KiB
59Elfogadva155ms8780 KiB
60Elfogadva162ms9840 KiB
61Elfogadva171ms9388 KiB
62Elfogadva150ms8928 KiB
63Elfogadva150ms8880 KiB
64Elfogadva156ms9896 KiB
65Elfogadva163ms9900 KiB
66Elfogadva146ms8916 KiB
67Elfogadva134ms8880 KiB
68Elfogadva148ms9792 KiB
69Elfogadva148ms9708 KiB
70Elfogadva133ms8720 KiB
71Elfogadva127ms8808 KiB
72Elfogadva144ms9896 KiB
73Elfogadva140ms9904 KiB
74Elfogadva128ms8880 KiB
75Elfogadva217ms11180 KiB
76Elfogadva172ms6320 KiB
77Elfogadva98ms3972 KiB
78Elfogadva172ms6320 KiB
79Elfogadva137ms4016 KiB
80Elfogadva178ms7468 KiB
81Elfogadva186ms7420 KiB
82Elfogadva188ms7476 KiB
83Elfogadva245ms12096 KiB
84Elfogadva120ms4144 KiB
85Elfogadva158ms4196 KiB
86Elfogadva210ms7628 KiB
87Elfogadva211ms7764 KiB
88Elfogadva224ms7732 KiB
89Elfogadva202ms7840 KiB