Submission #112073

# Submission time Handle Problem Language Result Execution time Memory
112073 2019-05-17T08:30:26 Z mechfrog88 None (JOI16_memory2) C++14
60 / 100
3 ms 412 KB
#include "Memory2_lib.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

void Solve(int T, int N){
	vector <ll> num(N*2,-1);
	vector <ll> arr(N*2);
	srand(time(0));
	for (int z=0;z<N*2;z++){
		arr[z] = z;
	}
	random_shuffle(arr.begin(),arr.end());
	while (arr.size() > 4){
		ll p,q,r;
		p = rand()%arr.size();
		q = rand()%arr.size();
		r = rand()%arr.size();
		while (num[arr[p]] != -1 || num[arr[q]] != -1 || num[arr[r]] != -1 || p==q || p==r || q==r){
			p = rand()%arr.size();
			q = rand()%arr.size();
			r = rand()%arr.size();
		}
		ll a = Flip(arr[p],arr[q]);
		ll b = Flip(arr[p],arr[r]);
		ll c = Flip(arr[q],arr[r]);
		if (a == b && b == c && c == a) continue;
		if (a == b){
			num[arr[p]] = a;
			arr.erase(arr.begin()+p);		
		}
		else if (b == c){
			num[arr[r]] = b;
			arr.erase(arr.begin()+r);
		}
		else if (c == a){
			num[arr[q]] = c;
			arr.erase(arr.begin()+q);
		}
	}
	vector <vector<ll>> d(arr.size(),vector<ll>(arr.size()));
	for (int z=0;z<arr.size();z++){
		for (int x=z+1;x<arr.size();x++){
			d[z][x] = Flip(arr[z],arr[x]);
			d[x][z] = d[z][x];
		}
	}
	ll s = arr.size();
	vector <ll> visited(arr.size(),false);
	ll ca = arr.size();
	while (ca > 1){
		for (int z=0;z<s;z++){
			if (visited[z]) continue;
			ll first = 0;
			ll count = 1;
			while (visited[first] || first == z){
				first++;
			}
			for (int x=0;x<s;x++){
				if (z == x) continue;
				if (visited[x]) continue;
				if (d[z][x] == d[z][first])count++;
			}
			if (count == ca){
				num[arr[z]] = d[z][first];
				ca--;
				visited[z] = true;
				break;
			}
		}
	}
	ll last;
	vector<vector<ll>> ans(N);
	for (int z=0;z<N*2;z++){
		if (num[z] == -1) {
			last = z; continue;
		}
		ans[num[z]].push_back(z);
	} 
	for (int z=0;z<N;z++){
		if (ans[z].size() == 1){
			ans[z].push_back(last);
		}
		Answer(ans[z][0],ans[z][1],z);
	}
	return;
}

Compilation message

memory2.cpp: In function 'void Solve(int, int)':
memory2.cpp:42:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int z=0;z<arr.size();z++){
               ~^~~~~~~~~~~
memory2.cpp:43:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for (int x=z+1;x<arr.size();x++){
                  ~^~~~~~~~~~~
memory2.cpp:72:5: warning: 'last' may be used uninitialized in this function [-Wmaybe-uninitialized]
  ll last;
     ^~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 384 KB Output is correct
4 Correct 2 ms 384 KB Output is correct
5 Correct 2 ms 256 KB Output is correct
6 Correct 2 ms 384 KB Output is correct
7 Correct 3 ms 384 KB Output is correct
8 Correct 2 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 256 KB Output is correct
3 Correct 2 ms 412 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 384 KB Output is correct
6 Correct 2 ms 384 KB Output is correct
7 Correct 3 ms 256 KB Output is correct
8 Correct 2 ms 256 KB Output is correct
9 Correct 2 ms 384 KB Output is correct
10 Correct 2 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 256 KB Output is correct
4 Incorrect 2 ms 256 KB Wrong Answer[2]
5 Halted 0 ms 0 KB -