题目描述:
局长有N种食物,每种食物有Ai份。
每天局长会吃一份食物,或者买一份食物(即每天只能进行吃或买其中的一种动作),这样过了M天
现在局长想知道M天后第p种食物的份数排名(从大到小,相同算并列,例如3 3 2,则排名为1 1 3)
N,M,P<=100,Ai<=1000
输入
第一行N M P
第二行N个数Ai
接下来M行,每行Ai或者Bi分别买一份食物i,吃一份食物i
输出
一个答案
样例输入
3 4 2
5 3 1
B 1
A 2
A 2
A 3
样例输出
1
代码
#include <iostream>
#include<cstdio>
using namespace std;
int main()
{
struct shi
{
char a; //记录吃了一份还是买了一份
int b; //记录是第p种食物
}s[102]; //记录局长的食物情况
int a[102];
int n,m,p;
int flag,t,k;
k=1;
cin>>n>>m>>p;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=0;i<m;i++)
{
cin>>s[i].a>>s[i].b;
if(s[i].a=='A') //如果是A,代表局长买了第s[i].b种食物一份
{
a[s[i].b-1]++;
}
if(s[i].a=='B')
{
a[s[i].b-1]--; //如果是B,代表局长吃了第s[i].b种食物一份
}
}
flag=a[p-1];
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(int i=0;i<n;i++)
{
//cout<<a[i]<<endl;
if(a[i]>flag)
{
k++;
}
}
cout<<k<<endl;
return 0;
}