Submission #68933

#TimeUsernameProblemLanguageResultExecution timeMemory
68933alenam0161Spiral (BOI16_spiral)C++17
27 / 100
1584 ms39800 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back const long long mod = 1e9+7; const int N = 5007; long long get(long long x,long long y){ long long r=max(abs(x),abs(y)); long long h=r+r+1; h%=mod; long long sz=h*h; sz%=mod; if(y==-r){ return (sz-(r-x)+mod+mod)%mod; } else{ sz-=r; sz-=r; sz+=mod; sz+=mod; sz%=mod; if(x==-r){ return (sz-(y+r)+mod+mod)%mod; } else{ sz-=r; sz-=r; sz+=mod; sz+=mod; sz%=mod; if(y==r){ return (sz-(x+r)+mod+mod)%mod; } else{ sz-=r; sz-=r; sz+=mod; sz+=mod; sz%=mod; return (sz-(r-y)+mod+mod)%mod; } } } } long long dp[3007][3007]; int sh=1001; int main() { int n,q; cin>>n>>q; if(n<=1000){ for(int i=-1000;i<=1000;++i) for(int j=-1000;j<=1000;++j){ dp[i+sh][j+sh]=dp[i+sh][j-1+sh]+dp[i-1+sh][j+sh]-dp[i-1+sh][j-1+sh]+get(i,j); dp[i+sh][j+sh]+=mod+mod+mod; dp[i+sh][j+sh]%=mod; } for(int i=1;i<=q;++i){ long long x,y,x1,y1; cin>>x>>y>>x1>>y1; long long gum=dp[x1+sh][y1+sh]-dp[x1+sh][y-1+sh]-dp[x-1+sh][y1+sh]+dp[x-1+sh][y-1+sh]; gum+=mod; gum+=mod; gum%=mod; cout<<gum<<endl; } return 0; } for(int i=1;i<=q;++i){ long long x,y,x1,y1; cin>>x>>y>>x1>>y1; long long gum=0; for(int j=x;j<=x1;++j){ for(int k=y;k<=y1;++k){ gum+=get(j,k); gum%=mod; } } cout<<gum<<endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...