[2011年NOIP提高组] 铺地毯
首先想到用二维数组,但是内存太大会爆;因为题目说的是最上面的那块地毯,所以暗示我们应该用for循环倒着推,又给了我们每个地毯的大小和位置,那我们直接从后看这块地毯包不包含(x,y)就好了,包含的话,又是倒着推的,那它肯定是最上面那一层了,直接输出。
#include<bits/stdc++.h>
using namespace std;
int main()
{
      int s,ss,n,x[20005],y[20005],i,j,g[20000],k[20000];
      cin>>n;
      for(i=1;i<=n;i++)
      {
            cin>>x[i]>>y[i]>>g[i]>>k[i];
      }
      cin>>s>>ss;
      for(i=n;i>=1;i--)
      {
            if(s>=x[i]&&s<=x[i]+g[i]&&ss>=y[i]&&ss<=y[i]+k[i])
          {
          cout<<i;
          return 0;
          }
      }
      cout<<-1;
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号