蒟蒻不会线段树,写了个桶排序,开了氧气,居然把前面十个点全过了。
如果是正式比赛里,这100分就让我水到了(大喜),但是洛谷不知为何加了一个subtask(恼),这个新增的数据点导致我这个代码虽然是100分但是还是处在unaccepted的状态。
优化的时候我把cin都换成了scanf,但是好像并没有什么作用,前面的点依然都是AC,最后的subtask还是T了。
所以这个代码有办法优化吗?能不能让它跑得更快一点,能顺利蒙混过关?
#include <bits/stdc++.h>
using namespace std;
int n, m;
int q[100100];
int op;
int beg, fin;
bool cmp(int a, int b)
{
return a > b;
}
int w;
int tong[100100];
int main()
{
scanf("%d %d", &n, &m);
for(int i = 1; i <= n; i = i + 1)
scanf("%d", &q[i]);
for(int i = 1; i <= m; i = i + 1)
{
scanf("%d %d %d", &op, &beg, &fin);
for(int j = beg; j <= fin; j = j + 1)
tong[q[j]] = true;
int k = 1;
if(op == 0)
{
for(int j = beg; j <= fin; j = j + 1)
{
while(tong[k] == false)
k ++;
q[j] = k;
tong[k] = false;
k ++;
}
}
else
{
for(int j = fin; j >= beg; j = j - 1)
{
while(tong[k] == false)
k ++;
q[j] = k;
tong[k] =false;
k ++;
}
}
}
scanf("%d", &w);
cout << q[w] << endl;
return 0;
}
顺便问一下诸位大佬是如何看待这种骗分行为的?