QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#278254#5140. Frozen ScoreboardzzuqyWA 3ms3912kbC++112.0kb2023-12-07 14:16:242023-12-07 14:16:25

Judging History

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

  • [2023-12-07 14:16:25]
  • 评测
  • 测评结果:WA
  • 用时:3ms
  • 内存:3912kb
  • [2023-12-07 14:16:24]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int read()
{
    int x;cin>>x;
    return x;
}
int n,m,cnt,sum,A[20],B[20];
char s[10000],ans[20];
vector<int>a,b,pos;
void work()
{
	scanf("%d%d",&cnt,&sum);

	a.clear();
	b.clear();
	pos.clear();
	for(int i=1;i<=m;i++)
	{
		scanf("%s",s);
		if(s[0]=='+')
		{
			int ta,tb;
			scanf("%s",s);
			sscanf(s,"%d/%d",&ta,&tb);
			cnt--;
			sum=sum-tb-(ta-1)*20;
			ans[i]='+';
			A[i]=ta;
			B[i]=tb;
		}
		else if(s[0]=='?')
		{
			ans[i]='?';
			int ta,tb;
			scanf("%d %d",&ta,&tb);
			a.push_back(ta);
			b.push_back(tb);
			pos.push_back(i);
		}
		else if(s[0]=='.')
		{
			ans[i]='.';
			continue;
		}
		else if(s[0]=='-')
		{
			ans[i]='-';
			scanf("%d",&B[i]);
		}
	}
	for(int now=0;now<(1<<a.size());now++)
	{
		int tcnt=0;
		for(int i=0;i<a.size();i++)
			if(now&(1<<i))
				tcnt++;
		if(tcnt!=cnt)
			continue;
		int l=0,r=0;
		for(int i=0;i<a.size();i++)
		{
			if(now&(1<<i))
			{
				ans[pos[i]]='+';
				l=l+20*(b[i]-a[i])+240;
				r=r+20*(b[i]-1)+299;
			}
			else
			{
				ans[pos[i]]='-';
				B[pos[i]]=b[i];
			}
		}
		if(l<=sum&&sum<=r)
		{
			cout<<"Yes\n";
			for(int i=0;i<a.size();i++)
			{
				if(now&(1<<i))
				{
					A[pos[i]]=b[i]-a[i]+1;
					B[pos[i]]=240;
					sum=sum-20*(A[pos[i]]-1)-240;
				}
			}
			for(int i=0;i<a.size()&&sum>0;i++)
			{
				int t=max(0,min(sum/20,a[i]-1));
				sum=sum-20*t;
				A[pos[i]]+=t;
				if(sum>=59)
				{
					sum-=59;
					B[pos[i]]=299;
				}
				else
				{
					B[pos[i]]=240+sum;
					sum=0;
					break;
				}
			}
			// sum=0;
			for(int x=1;x<=m;x++)
			{
				if(ans[x]=='+'){
					printf("+ %d/%d\n",A[x],B[x]);
					sum=sum+B[x]+(A[x]-1)*20;
				}
				else if(ans[x]=='-')
					printf("- %d\n",B[x]);
				else if(ans[x]=='.')
					printf(".\n");
			}
			return ;
		}
	}
	cout<<"No\n";
}
int main()
{
	// freopen("1.in","r",stdin);
	n=read();m=read();
	for(;n;n--)
	{
		work();
	}
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3912kb

input:

1 13
7 951
+ 1/6
? 3 4
+ 4/183
- 2
+ 3/217
.
.
.
+ 2/29
+ 1/91
.
+ 1/22
.

output:

Yes
+ 1/6
+ 3/243
+ 4/183
- 2
+ 3/217
.
.
.
+ 2/29
+ 1/91
.
+ 1/22
.

result:

ok ok (1 test case)

Test #2:

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

input:

6 2
1 100
.
? 3 4
2 100
+ 1/1
+ 1/2
0 0
- 5
- 6
2 480
? 100 100
? 100 100
2 480
? 99 100
? 100 100
1 2000
? 100 100
? 100 100

output:

No
No
Yes
- 5
- 6
Yes
+ 1/240
+ 1/240
No
Yes
+ 89/240
- 100

result:

ok ok (6 test cases)

Test #3:

score: -100
Wrong Answer
time: 3ms
memory: 3820kb

input:

1000 13
6 1519
+ 3/183
- 1
+ 9/133
? 2 3
- 5
? 1 3
- 5
? 1 1
? 1 3
- 5
+ 1/165
- 6
? 2 5
2 570
- 2
- 9
.
- 1
- 7
- 6
+ 4/179
- 2
? 2 5
.
- 2
? 1 3
.
1 140
.
- 2
.
- 2
- 1
- 2
- 2
.
.
.
.
+ 3/100
.
1 195
+ 1/195
.
.
.
.
.
.
.
.
? 1 1
.
.
.
0 0
.
.
.
.
.
.
.
.
.
.
.
.
.
3 776
? 8 22
? 1 8
- 6
+ 1/173
...

output:

Yes
+ 3/183
- 1
+ 9/133
+ 3/278
- 5
+ 3/240
- 5
+ 1/240
- 3
- 5
+ 1/165
- 6
- 5
Yes
- 2
- 9
.
- 1
- 7
- 6
+ 4/179
- 2
+ 5/251
.
- 2
- 3
.
Yes
.
- 2
.
- 2
- 1
- 2
- 2
.
.
.
.
+ 3/100
.
Yes
+ 1/195
.
.
.
.
.
.
.
.
- 1
.
.
.
Yes
.
.
.
.
.
.
.
.
.
.
.
.
.
Yes
- 254
- 8
- 6
+ 1/173
- 11
- 9
- 3
- 6
+ 4/2...

result:

wrong answer Integer 254 violates the range [1, 100] (test case 6)