답안 #386910

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
386910 2021-04-07T15:55:25 Z FatihSolak Nuclearia (CEOI15_nuclearia) C++17
0 / 100
1000 ms 237676 KB
#include <bits/stdc++.h>
using namespace std;

void solve(){
    bool swp = 0;
    int w,h;
    //cin >> w >> h;
    scanf("%d %d",&w,&h);
    if(w < h){
        swp = 1;
        swap(w,h);
    }
    long long arr[h+5][h+w+5];
    long long pre[h+5][h+w+5];
    for(int i=0;i<h+5;i++){
        for(int j = 0;j<h+w+5;j++){
            arr[i][j] = pre[i][j] = 0;
        }
    }    
    int n;
    //cin >> n;
    scanf("%d ",&n);
    for(int i=0;i<n;i++){
        int x,y,a,b;
        //cin >> x >> y >> a >> b;
        scanf("%d %d %d %d",&x,&y,&a,&b);
        if(swp)swap(x,y);
        x += h;
        for(int i=1;i<=h;i++){
            int dif = abs(y-i);
            if(dif * b > a)continue;

            arr[i][max(1,x-dif+1)] -= b;
            arr[i][max(1,x-(a/b)+1)] += b;
            arr[i][max(1,x-(a/b))] += a - b*(x - max(1,x-(a/b)));
            arr[i][max(1,x-(a/b)) + 1] -= a - b*(x - max(1,x-(a/b)));

            arr[i][min(w+h+1,x+dif+1)] -= b;
            arr[i][min(w+h+1,x+(a/b)+1)] += b;
            arr[i][min(w+h+1,x+(a/b)+1)] -= a%b;
        }
    }
    for(int i=1;i<=h;i++){
        for(int j=1;j<=w+h;j++){
            arr[i][j] += arr[i][j-1];
        }
        for(int j=1;j<=w+h;j++){
            arr[i][j] += arr[i][j-1];
        }
    }
    for(int i=1;i<=h;i++){
        for(int j=h+1;j<=w+h;j++){
            pre[i][j] = pre[i-1][j] + pre[i][j-1] - pre[i-1][j-1]+arr[i][j];
        }
    }
    int q;
    //cin >> q;
    scanf("%d",&q);
    while(q--){
        int x1,y1,x2,y2;
        //cin >> x1 >> y1 >> x2 >> y2;
        scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
        if(!swp)swap(x1,y1),swap(x2,y2);
        y1 += h;
        y2 += h;
        long double cnt = (x2-x1+1) * (y2 -y1+1);
        cout <<(long long) ((pre[x2][y2] - pre[x2][y1-1] - pre[x1 -1][y2] + pre[x1-1][y1-1])/cnt + 0.5) << endl;
    }
}

int main(){
    //ios_base::sync_with_stdio(false);
    //cin.tie(nullptr);
    #ifdef Local
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
    #endif
    int t=1;
    //cin>>t;
    while(t--){
        solve();
    }
    #ifdef Local
    cout<<endl<<fixed<<setprecision(2)<<1000.0 * clock() / CLOCKS_PER_SEC<< " milliseconds ";
    #endif
}

Compilation message

nuclearia.cpp: In function 'void solve()':
nuclearia.cpp:8:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    8 |     scanf("%d %d",&w,&h);
      |     ~~~~~^~~~~~~~~~~~~~~
nuclearia.cpp:22:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   22 |     scanf("%d ",&n);
      |     ~~~~~^~~~~~~~~~
nuclearia.cpp:26:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   26 |         scanf("%d %d %d %d",&x,&y,&a,&b);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
nuclearia.cpp:58:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   58 |     scanf("%d",&q);
      |     ~~~~~^~~~~~~~~
nuclearia.cpp:62:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   62 |         scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 163 ms 235116 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 167 ms 235116 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 53 ms 43884 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 53 ms 49296 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 781 ms 237412 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 646 ms 96672 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 629 ms 46444 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 617 ms 57580 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 853 ms 237676 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 834 ms 237548 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1094 ms 43884 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1100 ms 55404 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1096 ms 41332 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1087 ms 43884 KB Time limit exceeded
2 Halted 0 ms 0 KB -