QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#117453#6667. Prosjekzhouhuanyi0 174ms22148kbC++113.6kb2023-07-01 11:19:262023-07-01 11:19:27

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-07-01 11:19:27]
  • 评测
  • 测评结果:0
  • 用时:174ms
  • 内存:22148kb
  • [2023-07-01 11:19:26]
  • 提交

answer

#include<iostream>
#include<cstdio>
#include<vector>
#include<queue>
#define N 1000000
using namespace std;
long long read()
{
    char c=0;
    long long sum=0;
    while (c<'0'||c>'9') c=getchar();
    while ('0'<=c&&c<='9') sum=sum*10+c-'0',c=getchar();
    return sum;
}
struct reads
{
    long long x,y;
};
reads dque[N+1];
int T,n,top,length,length2,leng;
long long a[N+1],tong[N+1],tong2[N+1],tmp[N+1];
bool opt;
void solve(vector<long long>p)
{
    if (p.size()==1)
    {
	opt=1;
	for (int i=1;i<=top;++i) printf("%lld %lld\n",dque[i].x,dque[i].y);
	return;
    }
    vector<long long>q;
    for (int i=0;i<p.size();++i)
	for (int j=i+1;j<p.size();++j)
	    if (!((p[i]+p[j])&1))
	    {
		q.clear(),dque[++top]=(reads){p[i],p[j]},q.push_back((p[i]+p[j])>>1);
		for (int k=0;k<p.size();++k)
		    if (k!=i&&k!=j)
			q.push_back(p[k]);
		solve(q),top--;
		if (opt) return;
	    }
    return;
}
int main()
{
    int rt,rt2,x,y;
    long long tops,tops2;
    bool op,op2;
    queue<long long>A;
    queue<long long>B;
    vector<long long>p;
    T=read();
    while (T--)
    {
	n=read(),length=length2=opt=top=0;
	for (int i=1;i<=n;++i)
	{
	    a[i]=read();
	    if (!(a[i]&1)) tong[++length]=a[i];
	    else tong2[++length2]=a[i];
	}
	rt=0;
	for (int i=1;i<=min(59,length-1);++i)
	{
	    op=op2=0;
	    for (int j=1;j<=length;++j)
	    {
		if (!(tong[j]&(1ll<<i))) op=1;
		else op2=1;
	    }
	    if (op&&op2)
	    {
		rt=i;
		break;
	    }
	}
	rt2=0;
	for (int i=1;i<=min(59,length2-1);++i)
	{
	    op=op2=0;
	    for (int j=1;j<=length2;++j)
	    {
		if (!(tong2[j]&(1ll<<i))) op=1;
		else op2=1;
	    }
	    if (op&&op2)
	    {
		rt2=i;
		break;
	    }
	}
	for (int i=rt;i>=1;--i)
	{
	    leng=x=y=0;
	    for (int j=1;j<=length;++j)
	    {
		if (!(tong[j]&(1ll<<i))) x=j;
		else y=j;
	    }
	    dque[++top]=(reads){tong[x],tong[y]};
	    for (int j=1;j<=length;++j)
		if (j!=x&&j!=y)
		    tmp[++leng]=tong[j];
	    tmp[++leng]=(tong[x]+tong[y])>>1,length=leng;
	    for (int j=1;j<=length;++j) tong[j]=tmp[j];
	}
	for (int i=rt2;i>=1;--i)
	{
	    leng=x=y=0;
	    for (int j=1;j<=length2;++j)
	    {
		if (!(tong2[j]&(1ll<<i))) x=j;
		else y=j;
	    }
	    dque[++top]=(reads){tong2[x],tong2[y]};
	    for (int j=1;j<=length2;++j)
		if (j!=x&&j!=y)
		    tmp[++leng]=tong2[j];
	    tmp[++leng]=(tong2[x]+tong2[y])>>1,length2=leng;
	    for (int j=1;j<=length2;++j) tong2[j]=tmp[j];
	}
	for (int i=1;i<=length;++i)
	{
	    if (tong[i]%4==0) A.push(tong[i]);
	    else B.push(tong[i]);
	}
	while (A.size()>=3||B.size()>=3)
	{
	    if (A.size()>=3) tops=A.front(),A.pop(),tops2=A.front(),A.pop();
	    else tops=B.front(),B.pop(),tops2=B.front(),B.pop();
	    dque[++top]=(reads){tops,tops2};
	    if (((tops+tops2)>>1)%4==0) A.push((tops+tops2)>>1);
	    else B.push((tops+tops2)>>1);
	}
	length=0;
	while (!A.empty()) tong[++length]=A.front(),A.pop();
	while (!B.empty()) tong[++length]=B.front(),B.pop();
	for (int i=1;i<=length2;++i)
	{
	    if (tong2[i]%4==1) A.push(tong2[i]);
	    else B.push(tong2[i]);
	}
	while (A.size()>=3||B.size()>=3)
	{
	    if (A.size()>=3) tops=A.front(),A.pop(),tops2=A.front(),A.pop();
	    else tops=B.front(),B.pop(),tops2=B.front(),B.pop();
	    dque[++top]=(reads){tops,tops2};
	    if (((tops+tops2)>>1)%4==1) A.push((tops+tops2)>>1);
	    else B.push((tops+tops2)>>1);
	}
	while (!A.empty()) tong[++length]=A.front(),A.pop();
	while (!B.empty()) tong[++length]=B.front(),B.pop();
	p.clear();
	for (int i=1;i<=length;++i) p.push_back(tong[i]);
	solve(p);
	if (!opt) puts("-1");
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 11772kb

input:

99
4
739880851158065302 19206582949872932 883064254701115295 222072661880779376
7
148399819461615003 209088712310207988 53191076581680214 445068618251612752 230505279594622109 115754892157516718 804173775829453588
2
77979357045500669 41693388829622019
3
341612949433488278 609808714829036935 19994167...

output:

-1
804173775829453588 115754892157516718
230505279594622109 148399819461615003
209088712310207988 445068618251612752
327078665280910370 189452549528118556
258265607404514463 459964333993485153
359114970698999808 53191076581680214
77979357045500669 41693388829622019
199941674506573816 341612949433488...

result:

wrong answer you didn't find a solution but jury did (test case 1)

Subtask #2:

score: 0
Wrong Answer

Test #16:

score: 0
Wrong Answer
time: 2ms
memory: 11836kb

input:

100
3
3 3 2
3
4 1 1
4
1 3 4 4
6
4 4 2 3 1 2
4
0 2 1 4
3
0 2 0
7
3 3 1 1 3 4 0
2
0 4
4
1 4 2 3
7
4 0 0 3 2 3 4
4
4 2 0 3
7
0 2 2 1 4 2 4
7
3 0 3 1 2 0 3
4
4 3 1 4
6
2 3 0 1 3 4
5
1 4 0 3 4
5
4 2 0 4 2
3
0 1 2
6
4 1 4 2 0 4
7
4 2 4 3 1 3 1
4
1 4 4 0
2
1 1
6
0 3 3 0 0 4
7
4 3 0 3 3 3 4
4
4 1 1 3
6
2 0 ...

output:

-1
-1
1 3
4 4
4 2
4 2
1 3
2 2
2 4
3 3
4 2
3 1
2 0
-1
1 3
3 3
4 0
2 2
1 3
2 2
0 4
-1
4 2
4 0
0 2
3 3
3 3
3 1
0 2
1 3
2 4
4 2
2 2
0 4
2 2
3 1
2 2
0 2
1 3
3 3
0 2
1 1
1 3
1 3
4 4
4 2
4 2
1 3
0 2
3 3
3 1
-1
4 2
0 2
1 3
2 4
0 2
1 1
4 2
4 4
0 4
3 1
2 2
4 2
1 3
4 2
3 3
3 3
3 1
0 4
4 2
3 1
1 1
0 4
0 2
1 3
2...

result:

wrong answer you didn't find a solution but jury did (test case 6)

Subtask #3:

score: 0
Wrong Answer

Test #34:

score: 0
Wrong Answer
time: 101ms
memory: 9796kb

input:

100000
5
846784256447769304 457696478728961702 128469521648960690 597630796847754190 104256763714529164
5
658897822238868978 472135077337628566 399538027669313322 622703684108675696 425723088635325654
5
917704960887390986 140817562615382054 877934664521057998 782212806618666818 616380973421914538
8
...

output:

-1
622703684108675696 425723088635325654
658897822238868978 472135077337628566
565516449788248772 399538027669313322
482527238728781047 524213386372000675
-1
571151272187977852 655064257540479734
244724447292237728 930867290080315972
579752694340986386 506671523510380578
839457827735616722 613107764...

result:

wrong answer you didn't find a solution but jury did (test case 1)

Subtask #4:

score: 0
Wrong Answer

Test #46:

score: 0
Wrong Answer
time: 174ms
memory: 22148kb

input:

100
211957
911918942087402387 344230223346742784 16289402153237664 528890583619159010 886281719684850237 865484734102017297 321851390502278959 754268375474197153 237414161302130571 135637002716682378 824412491959977735 162505521049217610 246319278060116103 666703181591704279 650875500699154233 96397...

output:

187349684646959176 543486620620520822
591082823267833997 532418085391726079
344230223346742784 16289402153237664
249254979345412696 312772601466767068
411124119364554092 742729082115741192
328378031127309040 140593778890078108
496306822172706836 795972847417009120
180430902116578580 9880494204801185...

result:

wrong answer (365418152633739999 + 281013790406089882) is not an even number! (test case 1)