This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |