社区讨论
30分求大佬看,大数据会卡住
P1309[NOIP 2011 普及组] 瑞士轮参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mi6v3d56
- 此快照首次捕获于
- 2025/11/20 11:18 4 个月前
- 此快照最后确认于
- 2025/11/20 11:18 4 个月前
想知道为什么大数据输入时会卡住(就是复制时会卡住)
但换行可以继续输入
请大佬帮看看qwq
CPP#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <math.h>
using namespace std;
const int maxn=200005;
int n,r,q;
int t=0;
int s[maxn][2],w[maxn];
void qsort(int,int);
void qwq(int x,int y)
{
if(s[x][0]==s[y][0])
if(s[x][1]<s[y][1])
return;
t=s[x][0];
s[x][0]=s[y][0];
s[y][0]=t;
t=s[x][1];
s[x][1]=s[y][1];
s[y][1]=t;
t=w[x];
w[x]=w[y];
w[y]=w[x];
}
int main()
{
scanf("%d %d %d",&n,&r,&q);
for(int i=1;i<=2*n;i++)
{
scanf("%d",&s[i][0]);
s[i][1]=i;
}
for(int i=1;i<=2*n;i++)
scanf("%d",&w[i]);
qsort(1,2*n);
for(int i=1;i<=r;i++)
{
for(int j=2*n;j>=1;j-=2)
{
if(w[j]>w[j-1])
s[j][0]++;
else
s[j-1][0]++;
if(s[j+1][0]>=s[j][0])
qwq(j,j+1);
if(s[j][0]>=s[j-1][0])
qwq(j-1,j);
}
}
for(int i=1;i<=2*n;i++)
if(s[i+1][0]==s[i][0])
qwq(i,i+1);
printf("%d",s[q][1]);
}
void qsort(int x,int y)
{
int l=x,r=y,mid=s[(x+y)/2][0];
while(l<=r)
{
while(s[l][0]>mid) l++;
while(s[r][0]<mid) r--;
if(l<=r)
{
qwq(l,r);
l++,r--;
}
}
if(l<y) qsort(l,y);
if(x<r) qsort(x,r);
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...