A题22行只写 i<=n AC了,而加上j<=n就全WA了
#include <bits/stdc++.h>
using namespace std;
const int N =100010;
int aa[N];
typedef long long ll;
typedef pair<int,int> pii;
bool cmp(pii a,pii b)
{
if(aa[a.second]-aa[a.first]!=aa[b.second]-aa[b.first])
return aa[a.second]-aa[a.first]>aa[b.second]-aa[b.first];
else return a.first<b.first;
}
int main()
{
int T;
scanf("%d",&T);
while(T--){
int n;scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&aa[i]);
vector<pii> ans;
for(int i=1,j=1;i<=n&&j<=n;){
while(j<=n&&aa[j]>=aa[j-1]) j++;
ans.push_back({i,j-1});
i=j;j++;
}
int len=ans.size();
sort(ans.begin(),ans.end(),cmp);
for(int i=0;i<len;i++){
if(aa[ans[i].second]-aa[ans[i].first]==aa[ans[0].second]-aa[ans[0].first])
printf("%d %d ",ans[i].first,ans[i].second);
}puts("");
}
return 0;
}
可能有边界问题?但我觉得加与不加不影响答案呀
像 2 1 1 这种数据我也是输出了 1 1 2 3,也不至于全WA呀(要哭了😔
查看7道真题和解析