-
A - Killer Problem
- UVA - 11898
- You are given an array of N integers and Q queries. Each query is a closed interval [l, r]. You should find the minimum absolute difference between all pairs in that interval.
- 题意:
- 在一段区间内找差最小的两个数字输出最小差
-
#include <iostream> #include <algorithm> #include <cstring> #include <vector> #include <cmath> using namespace std; #define maxn 10005 vector<int>vis[maxn]; int t,n,q,a[maxn*20],l,r; int main() { cin>>t; while(t--) { bool flag=1; memset(vis,0,sizeof(vis)); cin>>n; for(int i=1; i<=n; i++) { cin>>a[i]; vis[a[i]].push_back(i); } cin>>q; while(q--) { flag=1; cin>>l>>r; for(int i=0; i<=maxn; i++) { for(int j=l; j<=r; j++) { int temp1=a[j]+i; int temp2=a[j]-i; if(temp1<maxn) { if(vis[temp1].size()>0) { for(int k=0; k<vis[temp1].size(); k++) { if(vis[temp1][k]>=l&&vis[temp1][k]<=r&&vis[temp1][k]!=j) { flag=0; cout<<i<<endl; break; } } } } else if(temp2>0) { if(vis[temp2].size()>0) { for(int k=0; k<vis[temp2].size(); k++) { if(vis[temp2][k]>=l&&vis[temp2][k]<=r&&vis[temp2][k]!=j) { flag=0; cout<<i<<endl; break; } } } } if(!flag) break; } if(!flag) break; } } } return 0; }
A - Killer Problem-分层累加
最新推荐文章于 2022-11-09 16:09:03 发布