제출 #867309

#제출 시각아이디문제언어결과실행 시간메모리
867309Faisal_SaqibNuclearia (CEOI15_nuclearia)C++17
55 / 100
1059 ms209852 KiB
#pragma GCC optimize("Ofast") #pragma GCC target("avx,avx2,fma") #include <iostream> #include <algorithm> #include <climits> #include <cmath> #include <map> #include <set> #include <iomanip> #include <vector> #include <cstring> #include <fstream> using namespace std; #define vll vector<ll> #define sll set<ll> #define vstr vector<string> #define ll long long #define ld long double #define supra main #define pb push_back #define add insert #define rall(x) rbegin(x),rend(x) #define all(x) (x).begin(),(x).end() #define I ios_base::sync_with_stdio(false); #define Hear cin.tie(NULL); #define Shots cout.tie(NULL); #define Ratatatata ll powmod(ll a,ll b,ll modulo) { if(b==0){ return 1; } ll temp=powmod(a,b/2,modulo); if(b%2==0){ return (temp*temp)%modulo; } else{ return (a*((temp*temp)%modulo))%modulo; } } inline ll read() { char c = getchar(); ll x = 0, s = 1; while (c < '0' || c > '9') { if (c == '-') s = -1; c = getchar(); } while (c >= '0' && c <= '9') { x = x * 10 + c - '0'; c = getchar(); } return x * s; } bool Prime(ll n){ if (n <= 1) return false; for (ll i = 2; i <= sqrt(n); i++) if (n % i == 0) return false; return true; } const int N = 2.5e6 + 90; struct ST { #define lc (n << 1) #define rc ((n << 1) | 1) long long t[4 * N], lazy[4 * N]; ST() { memset(t, 0, sizeof t); memset(lazy, 0, sizeof lazy); } inline void push(int n, int b, int e) { if (lazy[n] == 0) return; t[n] = t[n] + lazy[n] * (e - b + 1); if (b != e) { lazy[lc] = lazy[lc] + lazy[n]; lazy[rc] = lazy[rc] + lazy[n]; } lazy[n] = 0; } inline long long combine(long long a,long long b) { return a + b; } inline void pull(int n) { t[n] = t[lc] + t[rc]; } void upd(int n, int b, int e, int i, int j, long long& v) { push(n, b, e); if (j < b || e < i) return; if (i <= b && e <= j) { lazy[n] = v; //set lazy push(n, b, e); return; } int mid = (b + e) >> 1; upd(lc, b, mid, i, j, v); upd(rc, mid + 1, e, i, j, v); pull(n); } long long query(int n, int b, int e, int i, int j) { push(n, b, e); if (i > e || b > j) return 0; //return null if (i <= b && e <= j) return t[n]; int mid = (b + e) >> 1; return combine(query(lc, b, mid, i, j), query(rc, mid + 1, e, i, j)); } }; ST dif; ll n,m; void Call_Me_When_You_Want(int l,int r,ll cur,ll add) { if(r<l) { return; } dif.upd(1,1,m+1,l,l,cur); dif.upd(1,1,m+1,l+1,r,add); ll xc=-1*(cur+(r-l)*add); dif.upd(1,1,m+1,r+1,r+1,xc); } void solve1() { ll p=read(); for(int asp=0;asp<p;asp++) { ll j=read(),i=read(),final=read(),add=read(); ll l=max(1ll,j-(final/add)); ll cur=final-(add*(j-l)); Call_Me_When_You_Want(l,j-1,cur,add); ll r=min(m,j+(final/add)); Call_Me_When_You_Want(j,r,final,-add); } vll pre={0}; for(int i=1;i<=m;i++) { pre.pb(pre.back()+dif.query(1,1,m+1,1,i)); } ll q=read(); while(q--) { ll y1=read(),x1=read(),y2=read(),x2=read(); ll sum=0,cell=(y2-y1+1)*(x2-x1+1); sum=pre[y2]-pre[y1-1]; ld cur=((ld)sum/(ld)cell); cur+=0.5; cout<<(ll)cur<<'\n'; } } void solve() { m=read(),n=read(); if(n==1) { solve1(); return; } ll p=read(); vector<vll> grid(n+2,vll(m+2)); auto pre=grid; for(int i=0;i<p;i++) { ll y=read(),x=read(),a=read(),b=read(); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { grid[i][j]+=max(0ll,a-b*(max(abs(i-x),abs(j-y)))); } } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { pre[i][j]=(pre[i][j-1]+pre[i-1][j]+grid[i][j]-pre[i-1][j-1]); } } ll q=read(); while(q--) { ll y1=read(),x1=read(),y2=read(),x2=read(); ll sum=0,cell=(y2-y1+1)*(x2-x1+1); sum=pre[x2][y2]-pre[x1-1][y2]-pre[x2][y1-1]+pre[x1-1][y1-1]; ld cur=((ld)sum/(ld)cell); cur+=0.5; cout<<(ll)cur<<'\n'; } } int supra(){ I Hear Shots Ratatatata cout<<setprecision(1000); // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); ll tqwertyuiop=1; // cin>>tqwertyuiop; for(int tp=1;tp<=tqwertyuiop;tp++) { // cout<<"Case #"<<tp<<": "; solve(); } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

nuclearia.cpp: In function 'void solve1()':
nuclearia.cpp:128:21: warning: unused variable 'i' [-Wunused-variable]
  128 |         ll j=read(),i=read(),final=read(),add=read();
      |                     ^
#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...
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...