Submission #387232

#TimeUsernameProblemLanguageResultExecution timeMemory
387232KeshiSorting (IOI15_sorting)C++17
74 / 100
1093 ms17060 KiB
//In the name of God
#include <bits/stdc++.h>
#include "sorting.h"
using namespace std;

typedef int ll;
typedef pair<ll, ll> pll;

const ll maxn = 2e5 + 100;
const ll mod = 1e9 + 7;
const ll inf = 1e9;

#define fast_io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define file_io freopen("input.txt", "r+", stdin);freopen("output.txt", "w+", stdout);
#define pb push_back
#define Mp make_pair
#define F first
#define S second
#define Sz(x) ll((x).size())
#define all(x) (x).begin(), (x).end()

int g[maxn], a[maxn], b[maxn];
bool vis[maxn];

int findSwapPairs(int n, int s[], int m, int x[], int y[], int p[], int q[]) {
	for(ll i = 0; i < n; i++){
		a[i] = s[i];
	}
	for(ll j = 0; j <= m; j++){
		for(ll i = 0; i < n; i++){
			g[a[i]] = i;
			vis[i] = 0;
		}
		vector<vector<ll> > vec;
		for(ll i = 0; i < n; i++){
			if(vis[i]) continue;
			vector<ll> v2;
			ll v = i;
			do{
				vis[v] = 1;
				v2.pb(v);
				v = g[v];
			}while(v != i);
			vec.pb(v2);
		}
		if(j >= n - Sz(vec)){
			// inja oke
			vector<ll> v2(10);
			vec.pb(v2);
			ll p1 = 0;
			ll p2 = 1;
			for(ll i = 0; i < n; i++){
				b[s[i]] = i;
			}
			for(ll o = 0; o < j; o++){
				cout.flush();
				swap(s[x[o]], s[y[o]]);
				swap(b[s[x[o]]], b[s[y[o]]]);
				while(p2 == Sz(vec[p1])){
					p1++;
					p2 = 1;
				}
				p[o] = b[vec[p1][0]];
				q[o] = b[vec[p1][p2]];
				p2++;
				swap(s[p[o]], s[q[o]]);
				swap(b[s[p[o]]], b[s[q[o]]]);
			}
			return j;
		}
		if(j != m) swap(a[x[j]], a[y[j]]);
	}
	cout << 1 / 0;
	return -1;
}


/*int main(){
    fast_io;



    return 0;
}*/

Compilation message (stderr)

sorting.cpp: In function 'int findSwapPairs(int, int*, int, int*, int*, int*, int*)':
sorting.cpp:73:12: warning: division by zero [-Wdiv-by-zero]
   73 |  cout << 1 / 0;
      |          ~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...