c++,2,8点wa,帮忙看看吧

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;

int main()
{
int n,k[5001],s[5001],tong[102]={0},fen=100,ren=0,temp=0,temp2[5001],temp3;
float m;
cin>>n>>m;
for (int i=1;i<=n;i++){
cin>>k[i]>>s[i];
}

for (int i=1;i<=n;i++){
tong[s[i]]++;
}
while (ren<=floor(1.5*m)){
ren+=tong[fen];
fen--;
}
fen+=1;

cout<<fen<<" "<<ren<<endl;

for (int i=100;i>=fen;i--){
if (tong[i]==1){
for (int j=1;j<=n;j++){
if (s[j]==i){
cout<<k[j]<<" "<<i<<endl;
break;
}
}
}
if (tong[i]>1){
temp=0;
for (int j=0;j<=5000;j++){
temp2[j]==0;
}
for (int j=1;j<=n;j++){
if (s[j]==i){
temp++;
temp2[temp]=k[j];
}
}
for (int j=1;j<=temp-1;j++){
for (int k=1;k<=temp-j;k++){
if (temp2[k]>temp2[k+1]){
temp3=temp2[k];
temp2[k]=temp2[k+1];
temp2[k+1]=temp3;
}
}
}
for (int j=1;j<=temp;j++){
cout<<temp2[j]<<" "<<i<<endl;
}
}
}

return 0;
}

3 条评论

  • @ 2016-08-05 15:34:50

    谢谢

  • @ 2016-08-04 21:32:17

    我是初一的新手,请问ios::sync_with_stdio(0);是什么意思

    • @ 2016-08-04 21:36:35

      可以看成是iostream的加速器,通过切断与C风格输入输出(scanf,printf等)的同步,来节约这部分的时间开销
      注意:如果用了这个语句,不要再用<stdio.h>(或<cstdio>)里的任何输入输出函数,一律用<iostream>!

    • @ 2016-08-04 22:08:43

      那它包不包含在什么库函数中?求解答

    • @ 2016-08-04 22:31:21

      十分感谢

    • @ 2016-08-04 23:04:02

      嗯,准确的说是取消c++的标准输入输出流和c的stdio输入输出流的同步,大大加快cin和cout的速度。这题数据比较水……所以下标写错8个点居然都对了……对了,ios::sync_with_stdio(0);定义在命名空间std中,参数是bool型的,如果是false(即0)则取消流同步,如果时true(即1)则开启流同步。
      ——来自一名初二才开始学的初二蒟蒻

    • @ 2016-08-05 15:40:10

      谢谢......蒟蒻不是魔芋的意思吗......

  • @ 2016-08-04 10:52:28

    你的代码太丑了,没仔细看。之前我也出现了你这个问题,发现是确定分数线时的下标搞错了,你检查一下吧。再贴上我的代码:

    #include <iostream>
    #include <iomanip>
    #include <algorithm>
    using namespace std;
    int n,m,ans[2];
    struct people
    {
        int n;
        short p;
    }man[5005];
    bool cmp(struct people a,struct people b)
    {
        if(a.p>b.p)return 1;
        if(a.p<b.p)return 0;
        if(a.n<b.n)return 1;
        return 0;
    }
    int main()
    {
        ios::sync_with_stdio(0);
        cin>>n>>m;
        int i;
        for(i=0;i<n;i++)
            cin>>man[i].n>>man[i].p;
        sort(man,man+n,cmp);
        ans[1]=m*3/2;
        ans[0]=man[ans[1]-1].p;
        i=0;
        while(man[i].p>=ans[0])
            i++;
        ans[1]=i;
        cout<<ans[0]<<" "<<ans[1]<<endl;
        for(i=0;i<ans[1];i++)
            cout<<man[i].n<<" "<<man[i].p<<endl;
        return 0;
    }
    
  • 1

信息

ID
1813
难度
4
分类
(无)
标签
递交数
1558
已通过
692
通过率
44%
被复制
17
上传者