Submission #98064

#TimeUsernameProblemLanguageResultExecution timeMemory
98064autumn_eelMemory 2 (JOI16_memory2)C++14
100 / 100
3 ms384 KiB
#include <bits/stdc++.h>
#define rep(i,n)for(int i=0;i<(n);i++)
using namespace std;

#include "Memory2_lib.h"

static int d[100],t[100];
static vector<int>ans[50];

void Solve(int T, int N){
	vector<int>v;
	rep(i,2*N)v.push_back(i);
	memset(d,-1,sizeof(d));
	random_device rnd;
	while(!v.empty()){
		do{
			shuffle(v.begin(),v.end(),rnd);
		}while(d[v[0]]!=-1);
		map<int,int>mp;
		for(int i=1;i<v.size();i++){
			if(d[v[i]]!=-1){
				t[v[i]]=d[v[i]];
				mp[t[v[i]]]++;
				continue;
			}
			t[v[i]]=Flip(v[0],v[i]);
			mp[t[v[i]]]++;
		}
		int a=-1;
		for(auto p:mp){
			if(p.second%2){
				a=p.first;
				break;
			}
		}
		d[v[0]]=a;
		ans[a].push_back(v[0]);
		vector<int>nx;
		if(ans[a].size()==1)nx.push_back(v[0]);
		for(int i=1;i<v.size();i++){
			if(t[v[i]]==a){
				if(d[v[i]]==a){
					continue;
				}
				else nx.push_back(v[i]);
			}
			else if(d[v[i]]==-1){
				d[v[i]]=t[v[i]];
				ans[d[v[i]]].push_back(v[i]);
			}
		}
		v=nx;
	}
	rep(i,N){
		Answer(ans[i][0],ans[i][1],i);
	}
	return;
}

Compilation message (stderr)

memory2.cpp: In function 'void Solve(int, int)':
memory2.cpp:20:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=1;i<v.size();i++){
               ~^~~~~~~~~
memory2.cpp:40:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=1;i<v.size();i++){
               ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...