QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#190500#7043. Image Processingucup-team994TL 587ms19844kbC++141.6kb2023-09-28 23:28:192023-09-28 23:28:20

Judging History

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

  • [2023-09-28 23:28:20]
  • 评测
  • 测评结果:TL
  • 用时:587ms
  • 内存:19844kb
  • [2023-09-28 23:28:19]
  • 提交

answer

#pragma GCC optimize("O3")
#include<bits/stdc++.h>
using namespace std;
const int INF=2147483647;
const int N=1e6+5;
int n,K,last_ans,head(0),now_dp,now_diff,a[N],dp[N],pre_dp,pre_diff;
multiset<int> S_of_dp,S_of_diff;
int max(int a,int b) {
	return a>=b?a:b;
}
int min(int a,int b) {
	return a<=b?a:b;
}
void add_dp(int x) {
	S_of_dp.insert(x);
	now_dp=*S_of_dp.begin();
}
void del_dp(int x) {
	S_of_dp.erase(S_of_dp.find(x));
	now_dp=*S_of_dp.begin();
}
void add_diff(int x) {
	S_of_diff.insert(x);
	now_diff=(*S_of_diff.rbegin())-(*S_of_diff.begin());
}
void del_diff(int x) {
	S_of_diff.erase(S_of_diff.find(x));
	now_diff=(*S_of_diff.rbegin())-(*S_of_diff.begin());
}
void get_pre_dp_diff(int pos) {
	if(pos!=0) {
		pre_dp=min(now_dp,dp[pos-1]);
		pre_diff=max(*S_of_diff.rbegin(),a[pos])-min(*S_of_diff.begin(),a[pos]);
	} else {
		pre_dp=pre_diff=INF;
	}
	return;
}
void put(int x) {
	if(x>9)put(x/10);
	putchar((char)(x%10+'0'));
}
int read() {
	int x(0);
	char ch(getchar());
	while(ch>'9'||ch<'0')ch=getchar();
	while(ch<='9'&&ch>='0') {
		x=x*10+ch-'0';
		ch=getchar();
	}
	return x;
}
int main() {
	n=read();
	K=read();
	for(int i=1; i<=n; i++) {
		a[i]=read();
		a[i]^=last_ans;
		add_diff(a[i]);
		if(i>=K) {
			add_dp(dp[i-K]);
			while(now_diff>=now_dp&&head<i-K) {
				del_diff(a[head+1]);
				del_dp(dp[head]);
				head++;
			}
			get_pre_dp_diff(head);
			last_ans=dp[i]=min(max(now_dp,now_diff),max(pre_dp,pre_diff));
		} else {
			dp[i]=INF;
			last_ans=0;
		}
		put(last_ans);
		putchar('\n');
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 5644kb

input:

5 2
50 110 190 120 34

output:

0
60
80
90
80

result:

ok 5 number(s): "0 60 80 90 80"

Test #2:

score: 0
Accepted
time: 306ms
memory: 11652kb

input:

1000000 7
740760744 128949015 864430306 803157027 867410355 348411907 788815333 62537628 989888355 897434632 893725957 385915358 116671606 91645858 585889989 81062060 177182250 543069056 107482294 981936827 433021299 764779421 730485811 37353026 476269126 318260875 564753383 841579792 652031776 3016...

output:

0
0
0
0
0
0
738461340
738461340
738461340
738461340
738461340
861209643
861209643
738461340
739549417
739549417
739549417
783969241
783969241
783969241
738461340
904097193
904097193
910753514
910753514
910753514
910753514
910753514
904097193
904097193
904097193
904097193
904097193
904097193
90409719...

result:

ok 1000000 numbers

Test #3:

score: 0
Accepted
time: 368ms
memory: 12208kb

input:

1000000 106
718106353 957103229 178679497 30122152 539392262 967694986 411843264 878332932 304891280 49993165 575798961 112319481 929328366 408264344 69150964 860984775 852441333 611859467 307742908 777689983 835915923 680677321 283125322 870857035 73680192 903946994 345887196 671045189 390601447 92...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
973002280
973002280
973002280
973002280
973002280
973731513
973731513
973731513
973731513
...

result:

ok 1000000 numbers

Test #4:

score: 0
Accepted
time: 437ms
memory: 15212kb

input:

1000000 638
192463945 702134958 345542618 669865830 85855398 439488356 311123607 983422443 824130032 482375875 82888112 834016258 434451960 842325416 278600378 970131765 191089971 973830613 676858689 16912555 889301644 195308390 8838132 65590862 91160693 10485363 565917834 867947180 403081242 995642...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 1000000 numbers

Test #5:

score: 0
Accepted
time: 587ms
memory: 19844kb

input:

1000000 4419
766757907 691258997 943689588 724926794 873612124 655942731 622247010 127393979 566689614 916397853 129170439 351371578 395010700 362176313 144517148 334931535 997357717 866472973 141659563 230674896 754534513 915060959 784926145 24412372 17940633 506638086 568637474 674497801 972536484...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 1000000 numbers

Test #6:

score: -100
Time Limit Exceeded

input:

1000000 15252
482549745 234451363 379198395 186404152 746970639 99618958 954628472 864867575 609040514 853026700 88647190 400589742 756951366 226001929 346217977 249948293 755539806 996608570 767720589 187525639 705337860 968784962 806623701 413357199 781068200 120489841 202517850 986199359 63965896...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result: