QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#81947#5516. Modern Machinezhouhuanyi15 541ms7820kbC++232.2kb2023-02-26 19:02:042023-02-26 19:02:13

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-02-26 19:02:13]
  • 评测
  • 测评结果:15
  • 用时:541ms
  • 内存:7820kb
  • [2023-02-26 19:02:04]
  • 提交

answer

#include<iostream>
#include<cstdio>
#include<set>
#define N 120000
using namespace std;
int read()
{
    char c=0;
    int 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
{
    int l,r;
    char data;
    bool operator < (const reads &t)const
    {
	return r<t.r;    
    }
};
char c[N+1];
int n,m,q,res,a[N+1],A[N+1];
set<reads>s;
char query(int x)
{
    auto it=s.lower_bound((reads){0,x});
    return (*it).data;
}
int get_r(int x)
{
    auto it=s.lower_bound((reads){0,x});
    return (*it).r;
}
int get_l(int x)
{
    auto it=s.lower_bound((reads){0,x});
    return (*it).l;
}
void adder(int l,int r,char cs)
{
    reads top;
    int sl=l,sr=r;
    while (1)
    {
	auto it=s.lower_bound((reads){0,l});
	if (it==s.end()||(*it).l>r) break;
	top=(*it);
	if (top.data=='R') res-=(top.r-top.l+1);
	s.erase(it);
	if (top.l<=l-1)
	{
	    if (top.data=='R') res+=(l-top.l);
	    s.insert((reads){top.l,l-1,top.data});
	}
	if (r+1<=top.r)
	{
	    if (top.data=='R') res+=(top.r-r);
	    s.insert((reads){r+1,top.r,top.data});
	}
    }
    auto it=s.lower_bound((reads){0,r});
    if (it!=s.end()&&(*it).data==cs) sr=(*it).r,s.erase(it);
    it=s.lower_bound((reads){0,l});
    if (it!=s.begin())
    {
	it--;
	if ((*it).data==cs) sl=(*it).l,s.erase(it);
    }
    s.insert((reads){sl,sr,cs});
    if (cs=='R') res+=(r-l+1);
    return;
}
int main()
{
    int l,r,sl,sr,op;
    n=read(),m=read();
    for (int i=1;i<=n;++i) cin>>c[i];
    for (int i=1;i<=m;++i) A[i]=read();
    q=read();
    while (q--)
    {
	l=read(),r=read(),res=n,s.clear();
	s.insert((reads){1,n,'R'});
	for (int i=1;i<=n;++i) adder(i,i,c[i]);
	for (int i=l;i<=r;++i)
	{
	    sl=sr=A[i],adder(A[i],A[i],'R'),op=0;
	    while (1)
	    {
		if (!op)
		{
		    if (sr==n)
		    {
			op=1;
			break;
		    }
		    else if (query(sr+1)=='R') sr=get_r(sr+1);
		    else sr++,op=1;
		}
		else
		{
		    if (sl==1)
		    {
			op=0;
			break;
		    }
		    else if (query(sl-1)=='B') sl=get_l(sl-1);
		    else sl--,op=0;
		}
	    }
	    if (!op) adder(sl,sr,'R');
	    else adder(sl,sr,'B');
	}
	printf("%d\n",res);
    }
    return 0;
}

详细

Subtask #1:

score: 3
Accepted

Test #1:

score: 3
Accepted
time: 1ms
memory: 3404kb

input:

3 1
BBR
3
1
1 1

output:

0

result:

ok single line: '0'

Test #2:

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

input:

3 10
BBB
3 3 3 1 3 3 3 3 3 1
1
2 5

output:

2

result:

ok single line: '2'

Test #3:

score: 0
Accepted
time: 2ms
memory: 3464kb

input:

10 1
RBBBBRRBBR
9
1
1 1

output:

3

result:

ok single line: '3'

Test #4:

score: 0
Accepted
time: 2ms
memory: 3464kb

input:

10 10
RRRBBRRBRB
5 9 4 6 7 7 4 3 8 2
1
1 10

output:

1

result:

ok single line: '1'

Test #5:

score: 0
Accepted
time: 2ms
memory: 3388kb

input:

300 300
BRRRRBBRBRBRBBBRBRRRBRBBRBBRRBBRBBRBRBRBRBBRRBBRBBRBBBBRRRRBRBRBBBBRBBBRBBRBBRBRBRRBRBBRRRRBRBBRRRBRRBRBBBRRRRBRRRBBBBRRBBRBBBRRRBRBBRBRBBRRBRBRRRBRBRBBBBRRBRBRRRRRBRRRRRBRRRBRBRRRRRBBBRRBBRBBRRRRBBBBRBRBBBRRRRBBBBBBBBBBRBRRBRBBRRRRBRBBRRRBBRBRRRBBRBRRBBRBBBBRBRBRBBBRBBRBRBBRBBRBRBRBRRRBBBBR...

output:

29

result:

ok single line: '29'

Test #6:

score: 0
Accepted
time: 2ms
memory: 3376kb

input:

300 300
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...

output:

149

result:

ok single line: '149'

Test #7:

score: 0
Accepted
time: 2ms
memory: 3508kb

input:

5 2
RBRBB
2 5
1
1 2

output:

4

result:

ok single line: '4'

Subtask #2:

score: 12
Accepted

Dependency #1:

100%
Accepted

Test #8:

score: 12
Accepted
time: 6ms
memory: 3700kb

input:

7000 7000
RRBRRRRRRBBRBRBRRRBRRRBRRRRBRBRBRBRBBBRBRRRBBBRBBBBBBRBBBRRBRBRBBRRRBBBBRRBBRBBRBBRRRBBRRBRBRRRRRBBRRBRBBBRBBRRRRBRBBBBRBBBBBBRRRBRBRBBRBRRBBBBBRRBBBBBBRBBBRRBBRRBBBBBBRBRBRBBRBBRBBBRRBRBBRBBBBBRBRRBRRBRRRBRBBBBBRRBRBRRBRRRRBBBBRRBBRRRRRBBBBBRRBBBBBBRRBBRBRRRRRRRBRRBRRBBBBBBBBRRRRBBRRRRRRR...

output:

5505

result:

ok single line: '5505'

Test #9:

score: 0
Accepted
time: 3ms
memory: 3748kb

input:

7000 7000
RRBRRRBBRRBBRBBBBRBRBRRBBBBBBBBBBRRRBRRBBRRRRBBRRBRRRRRBBRBBBBBRRBBBBRBBBBRBRBBBBBRBBRRRBBBBRRBRRBRRBRBBBRRRRBBRRBRRBRBBRBBBRBBBRRBRBBBRRBBBBBRBBRBRBRBBBBRRBBBRRRRBRRBBRBRBBBBBBRRRRRBBRRBBRRBBBRBBBRRRRRBRBBRBRBBRRBBRBRRRBBRRBBBRRBRRRRRRRBBRBRRBRBRBRBRBRBBRBRRBRBBBBBBBRRBRRRBBBBRRBBRRRBBRBR...

output:

5936

result:

ok single line: '5936'

Test #10:

score: 0
Accepted
time: 37ms
memory: 3712kb

input:

7000 7000
RBBRBRBRRRBBRBRRBRBBRBRRRBRBBBRBBRBRBRBRRBBBBRBRRRBBRRRRBBRRRRBBRBRBRRRRBBRRBBRBRBBBRBBBBBRBBRBBRRBBRRRRRBBRBRBRRBBRRRBRBBBRBRRBRRRBRRRBRBBBBRBBBBBBRBRRRBRRRBRBBBRBRRBBRRBRRBBBBBRBBRRRRBBRRBBBBRRBRBRRRRBBRRRRRBRBRRBBRRRRRBRRBRBBBBRRBBBBRBRRRBBRBRRRRRBRRBRRRBRRBRRRRRBBBRBBBRBRRRBRBBBBRRRRRR...

output:

6260

result:

ok single line: '6260'

Test #11:

score: 0
Accepted
time: 82ms
memory: 3464kb

input:

7000 7000
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

output:

3499

result:

ok single line: '3499'

Test #12:

score: 0
Accepted
time: 4ms
memory: 3648kb

input:

7000 7000
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...

output:

3906

result:

ok single line: '3906'

Subtask #3:

score: 0
Time Limit Exceeded

Dependency #2:

100%
Accepted

Test #13:

score: 10
Accepted
time: 541ms
memory: 7804kb

input:

120000 120000
BBBBRBBRBRRBRRRBBBRRRRRBRRRRRRRRRRRBBBBRBRBBBBBBRBRBBBRBBRBRRBBRBRRRBRBBBBBRBRRBBRRRRRBBRBBBBRBBRRBRRRRBRBBBRRRBBBRRBRRBBBRRRBRRRBBRBBRRRBBBRBBRBBBBBRBRRRRBBRBRBRBBRRRRRRRBBRRBBBBRRRBBRRRRRBBBBRBBBBRBRRBBBRBRBBBRBRBRRBBRBRBBBRRBBRBBBBRBBRRBRBRBRBRRBBRBBBBBBBRRRRBRBRBRBRRRRBRRBBBRBRRBRB...

output:

110620
106126
106019
110676
111965

result:

ok 5 lines

Test #14:

score: 0
Accepted
time: 538ms
memory: 7820kb

input:

120000 120000
BRRBBBRRRRRRRBRRRRRRRBBRBBRRBBRRRRRBRBRRBRRRRRBRRBBBBRRBRRRBBBBRRBRBRBBBRBBRRBRRRBRRBRBBBBRRRBRBRBRBBBBRBRRRBRBBRBBBRRBBBRBBBBRRBBRRBBRBRRRBBBRBBBRRRRBBBBBRRRRBBBBBBBRRRRRRRBBBRRRBBRRRRBBBRBBBRRBBBRRRRRRRRRRRRRBRRBRRBRBRRBBBBBBRRRRBRRBRBBBBRRBRRRRRBRRBRRRBBRRRBBRRRRRBRBRRRRBBBBBBBRBRRR...

output:

96348
101002
105432
99656
104213

result:

ok 5 lines

Test #15:

score: -10
Time Limit Exceeded

input:

120000 120000
BRBRRBBBRBRBRRRRBRRRRBBRBRBBBBBBBRBBRRBRRRRRBRRRRBBBRRRBBRRBBRRBBBRBRRRBBRRRBBRRBRRRRRBRRBRBRBRRRRBRRRRBRBRBRRRBBBBRBBRRBRBRRBBRRBBBBRBRRRBRRRRBBBRBBRBBRRBBBBBBBBRBBBBRRBBBRRBRRRRRRBBRBRBRRRBBRRRRBBBBRBBBRBRBRBRBBRRRBBBBBBRRRRRRBRBBRRRRBRBBBRBBRBRRRRBBBRRRBBRBRRBBBRBRRBRRRRRRRBBRRRBRRB...

output:


result:


Subtask #4:

score: 0
Time Limit Exceeded

Test #21:

score: 0
Time Limit Exceeded

input:

10 120000
RRRRRRRRRR
9 1 9 6 1 9 6 10 3 2 6 4 2 5 7 10 8 9 2 6 7 10 2 9 7 5 9 9 2 7 4 1 8 3 3 6 9 4 7 9 6 8 8 2 5 6 8 3 9 2 5 2 5 9 8 4 8 3 2 2 5 1 9 1 7 9 9 4 9 5 2 10 7 4 3 8 1 10 7 6 6 2 3 8 7 8 5 9 2 2 1 10 2 2 5 4 2 5 9 1 8 4 5 1 2 8 3 10 10 6 7 2 1 5 10 1 9 10 1 7 3 10 8 10 6 8 3 1 10 9 10 5 5...

output:


result:


Subtask #5:

score: 0
Time Limit Exceeded

Test #26:

score: 0
Time Limit Exceeded

input:

120000 120000
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

output:


result:


Subtask #6:

score: 0
Time Limit Exceeded

Test #30:

score: 0
Time Limit Exceeded

input:

120000 120000
RRBBRBRBBBRBRRBRBRRRBRBRRBRRRBBRBBBBBBRBBRBRBRBRRBRBRBRRRBRBBBBRRBBRRBBRRRBRRBRBBRRRBBBRRBBBBRBBBRBBBRBBBRBBRBBBBRBBBBRRBRRRRRRRBRRRBRBBBRBBBBRBBRBRBRRBBRRBRBBBBRBBBRBBRRBBBBRBBBBRBRRBRBBRBBBBRRBBBBBBRBBRBBBBBBRBBRRRRRBBBRBBBRBRRBBRBRBRBBRRBRRBBBRBRBRRRBBRRBBRRRRBRRBBRRBBBBBBBRBBBRBBBR...

output:


result:


Subtask #7:

score: 0
Skipped

Dependency #1:

100%
Accepted

Dependency #2:

100%
Accepted

Dependency #3:

0%