90分最后一个点WA求助!!!!!
查看原帖
90分最后一个点WA求助!!!!!
1265486
ShiqingHuang1117楼主2024/3/17 15:21
#include<bits/stdc++.h>
using namespace std;
using ll = long long;

const int maxn = 4010;
int a[maxn][4],n;
int b[maxn], c[maxn],btop,ctop;
int f[maxn][maxn];
map<int, int>mp;

int main()
{
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);

      cin>>n;
      for(int i = 1;i <= n;i++){
        for(int j = 0;j < 4;j++){
            cin>>a[i][j];
            b[++btop] = a[i][j];
        }
      }
      sort(b + 1,b + 1 + btop);
      b[0] = -100000007;
      for(int i = 1;i <= btop;i++){
        if(b[i] != b[i - 1]){
            c[++ctop] = b[i];
            mp[b[i]] = ctop;
        }
      }
      for(int i = 1;i <= n;i++){
        for(int j = 0;j < 4;j++){
            a[i][j] = mp[a[i][j]];
        }
      }
      for(int k = 1;k <= n;k++){
        for(int i = a[k][0];i <a[k][2];i++){
            f[i][a[k][3]]++;
            f[i][a[k][1]]--;
        }
      }
      for(int i = 1;i < ctop;i++)
        for(int j = 1;j < ctop;j++)
            f[i][j] += f[i][j - 1];
      ll ans = 0;
      for(int i = 1;i < ctop;i++)
        for(int j = 1;j < ctop;j++){
            if(f[i][j]){
                ans += (ll)((c[i + 1] - c[i]) * (c[j + 1] - c[j]));
            }
        }
    cout<<ans<<'\n';
    return 0;
}
2024/3/17 15:21
加载中...