QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#357406#403. Memory2bonkar100 ✓1ms3860kbC++142.2kb2024-03-18 21:03:542024-03-18 21:03:54

Judging History

你现在查看的是最新测评结果

  • [2024-03-18 21:03:54]
  • 评测
  • 测评结果:100
  • 用时:1ms
  • 内存:3860kb
  • [2024-03-18 21:03:54]
  • 提交

answer

#include "Memory2_lib.h"
#include <bits/stdc++.h>
#include <vector>

using namespace std;

constexpr int MAXN = 101;

int usd[MAXN];

int wst[MAXN];


int res[MAXN];
vector<int> rr[MAXN];


void Solve(int T, int n){
	n*=2;
	for(int i = 0; i < n; i++){
		res[i] = -1;
	}
	int a=0, b=1, c=-1, r=Flip(0, 1);
	for(int i = 2; i < n; i++){
		//cerr << i << " : " << a << ' ' << b << ' ' << c << ' ' << r << '\n';
		int r2 = Flip(a, i);
		int r3 = Flip(b, i);
		//cerr << r2 << ' ' << r3 << '\n';
		if(c != -1){
			if(r2 == r3){
				if(r2 == r){
					//There were two, and we approved a and b
					res[a] = r; 
					res[b] = r; 
					a = c;
					b = i;
					c = -1;
					r = Flip(a, b);
					continue;
				}
				else{
					res[i] = r2;
					continue;
				}
			}
			else if(r == r2){
				swap(a, b);
				swap(r2, r3);
			}
			//r = r3 <=> r2(a) is NOT in pair <=> b and c are the pair
			res[b] = r; 
			res[c] = r; 
			b = i;
			c = -1;
			r = Flip(a, b);
			continue;
		}
		if(r == r2 && r2 == r3){
			//Two of same kind
			//WE discovered two of same kind
			c = a;
			a = i;
			r = r3;
			continue;
		}
		else{
			if(r == r2){
				res[a] = r;
				a = i;
				r = r3;
			}
			else if(r == r3){
				res[b] = r;
				b = i;
				r = r2;
			}
			else if(r2 == r3){
				res[i] = r2;
			}
			else{
				assert(0);
			}
		}
	}
	for(int i = 0; i < n; i++){
		//cerr << res[i] << ' ';
		if(res[i] != -1)
			rr[res[i]].push_back(i);
	}

	res[a] = r;
	res[b] = r;
	//cerr << '\n';
	//cerr << a << ' ' << b << ' ' << c << ' ' << r << '\n';
	int A=-1, B=-1;
	for(int i = 0; i*2 < n; i++){
		if(rr[i].size() == 0){
			res[a] = i;
			res[b] = i;
			rr[i].push_back(a);
			rr[i].push_back(b);
		}
		else if(rr[i].size() <= 1){
			swap(A, B);
			A=i;
		}
	}
	if(B != -1){
		//Test if a is A
		int inv = A + B - r;
		int r1 = Flip(a, rr[inv][0]);
		// int r2 = Flip(b, rr[r][0]);
		if(r1 == r){
			swap(a, b);
		}
		//teraz r2 = r <=> b jest inv a jest r
		rr[r].push_back(a);
		rr[inv].push_back(inv);
	}
	for(int i = 0; i < n; i++){
		if(rr[i].size() > 1)
			Answer(rr[i][0], rr[i][1], i);
	}
	return;
}

Details

Subtask #1:

score: 10
Accepted

Test #1:

score: 10
Accepted
time: 1ms
memory: 3820kb

Test #2:

score: 0
Accepted
time: 0ms
memory: 3800kb

Test #3:

score: 0
Accepted
time: 0ms
memory: 3808kb

Test #4:

score: 0
Accepted
time: 0ms
memory: 3780kb

Test #5:

score: 0
Accepted
time: 0ms
memory: 3732kb

Test #6:

score: 0
Accepted
time: 0ms
memory: 3728kb

Test #7:

score: 0
Accepted
time: 0ms
memory: 3812kb

Test #8:

score: 0
Accepted
time: 1ms
memory: 3740kb

Subtask #2:

score: 50
Accepted

Test #9:

score: 50
Accepted
time: 1ms
memory: 3780kb

Test #10:

score: 0
Accepted
time: 0ms
memory: 3828kb

Test #11:

score: 0
Accepted
time: 1ms
memory: 3820kb

Test #12:

score: 0
Accepted
time: 0ms
memory: 3800kb

Test #13:

score: 0
Accepted
time: 0ms
memory: 3780kb

Test #14:

score: 0
Accepted
time: 0ms
memory: 3720kb

Test #15:

score: 0
Accepted
time: 1ms
memory: 3780kb

Test #16:

score: 0
Accepted
time: 0ms
memory: 3844kb

Test #17:

score: 0
Accepted
time: 1ms
memory: 3804kb

Test #18:

score: 0
Accepted
time: 0ms
memory: 3820kb

Subtask #3:

score: 40
Accepted

Test #19:

score: 40
Accepted
time: 0ms
memory: 3732kb

Test #20:

score: 0
Accepted
time: 0ms
memory: 3780kb

Test #21:

score: 0
Accepted
time: 0ms
memory: 3860kb

Test #22:

score: 0
Accepted
time: 1ms
memory: 3856kb

Test #23:

score: 0
Accepted
time: 0ms
memory: 3816kb

Test #24:

score: 0
Accepted
time: 0ms
memory: 3848kb

Test #25:

score: 0
Accepted
time: 0ms
memory: 3720kb

Test #26:

score: 0
Accepted
time: 0ms
memory: 3836kb

Test #27:

score: 0
Accepted
time: 0ms
memory: 3780kb

Test #28:

score: 0
Accepted
time: 1ms
memory: 3732kb

Extra Test:

score: 0
Extra Test Passed