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呀(要哭了😔