Submission #2698725


Source Code Expand

Copy
#include <bits/stdc++.h>
using namespace std;

#define NDEBUG
#ifdef DEBUG
#include "../cout11.h"
#undef NDEBUG
#endif
#include <cassert>

typedef long long ll;
typedef long double Double;
typedef unsigned long long ull;
typedef pair<int,int> ii;
typedef pair<ll,ll> llll;
typedef pair<double,double> dd;

typedef vector<int> vi;
typedef vector<vector<int>> vvi;
typedef vector<ii> vii;
typedef vector<vector<ii>> vvii;
typedef vector<ll> vll;
typedef vector<string> vs;
typedef vector<double> vd;
typedef vector<long double> vD;

#define sz(a)  int((a).size())
#define pb  push_back
#define FOR(var,from,to) for(int var=(from);var<=(to);++var)
#define rep(var,n)  for(int var=0;var<(n);++var)
#define rep1(var,n)  for(int var=1;var<=(n);++var)
#define repC2(vari,varj,n)  for(int vari=0;vari<(n)-1;++vari)for(int varj=vari+1;varj<(n);++varj)
#define ALL(c)  (c).begin(),(c).end()
#define RALL(c)  (c).rbegin(),(c).rend()
#define tr(i,c)  for(auto i=(c).begin(); i!=(c).end(); ++i)
#define found(s,e)  ((s).find(e)!=(s).end())
#define mset(arr,val)  memset(arr,val,sizeof(arr))
#define mid(x,y) ((x)+((y)-(x))/2)
#define IN(x,a,b) ((a)<=(x)&&(x)<=(b))

ll gcd(ll a, ll b) { while(a) swap(a, b%=a); return b; }

const ll MOD=1000000007LL;

ll ADD(ll x, ll y) { return (x+y) % MOD; }
ll SUB(ll x, ll y) { return (x-y+MOD) % MOD; }
ll MUL(ll x, ll y) { return x*y % MOD; }
ll POW(ll x, ll e) { ll v=1; for(; e; x=MUL(x,x), e>>=1) if (e&1) v = MUL(v,x); return v; }
ll DIV(ll x, ll y) { /*assert(y%MOD!=0);*/ return MUL(x, POW(y, MOD-2)); }
// ll comb(ll n, ll k) { ll v=1; for(ll i=1; i<=k; i++) v = DIV(MUL(v, n-i+1),i); return v; }
//

#define INTSPACE 12
char _buf[INTSPACE*1000000 + 3];

int loadint() {
    if (fgets(_buf, INTSPACE+3, stdin)==NULL) return 0;
    return atoi(_buf);
}

int loadvec(vector<int>& v, int N=-1) {
    if (N == -1) {
        N = loadint();
        if (N==0) return 0;
    }
    int bufsize = INTSPACE*N + 3;
    if (fgets(_buf, bufsize, stdin)==NULL) return 0;
    v.resize(N);

    int i=0;
    bool last = false;
    for (char *p=&_buf[0]; ;) {
        char *q = p;
        while (*q > ' ') ++q;
        if (*q == 0x0D || *q == 0x0A) last = true;
        *q = 0;
        v[i++] = atoi(p);
        if (last || i == N) break;
        p = q+1;
    }
    // assert(i <= N);
    return i;
}
void read_cr() {
    fgets(_buf, 256, stdin);
}

ll solve(int n,int m,vi& x,vi& y) {
    ll W = 0, H = 0;
    for (int i=0; i<n-1; ++i) {
        ll dx = (ll)x[i+1] - x[i];
        ll before = i+1, after = (n-1)-i;
        // printf("%d) %lld x %lld x %lld \n", i,dx,before,after);
        W = ADD(W, MUL(dx, MUL(before,after)));
    }
    for (int i=0; i<m-1; ++i) {
        ll dy = (ll)y[i+1] - y[i];
        ll before = i+1, after = (m-1)-i;
        // printf("%d) %lld x %lld x %lld \n", i,dy,before,after);
        H = ADD(H, MUL(dy, MUL(before,after)));
    }
    return MUL(W,H);
}

int main() {
    int n,m; cin >> n >> m;
    read_cr();
    vi x(n), y(m);
    loadvec(x, n);
    loadvec(y, m);
    cout << solve(n,m,x,y) << endl;
    return 0;
}

Submission Info

Submission Time
Task D - 井井井 / ###
User naoya_t
Language C++14 (GCC 5.4.1)
Score 500
Code Size 3185 Byte
Status
Exec Time 11 ms
Memory 2048 KB

Compile Error

./Main.cpp: In function ‘void read_cr()’:
./Main.cpp:85:28: warning: ignoring return value of ‘char* fgets(char*, int, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
     fgets(_buf, 256, stdin);
                            ^

Test Cases

Set Name Score / Max Score Test Cases
Sample 0 / 0 0_000.txt, 0_001.txt
All 500 / 500 0_000.txt, 0_001.txt, max.txt, min.txt, mod.txt, n2.txt, rndA.txt, rndB.txt, rndC.txt, rndD.txt, rndE.txt, rndF.txt, rndG.txt, rndH.txt, rndI.txt, rndJ.txt, var.txt
Case Name Status Exec Time Memory
0_000.txt 1 ms 256 KB
0_001.txt 1 ms 256 KB
max.txt 11 ms 2048 KB
min.txt 1 ms 256 KB
mod.txt 6 ms 1664 KB
n2.txt 6 ms 1664 KB
rndA.txt 11 ms 2048 KB
rndB.txt 11 ms 2048 KB
rndC.txt 11 ms 2048 KB
rndD.txt 11 ms 2048 KB
rndE.txt 11 ms 2048 KB
rndF.txt 11 ms 2048 KB
rndG.txt 11 ms 2048 KB
rndH.txt 11 ms 2048 KB
rndI.txt 11 ms 2048 KB
rndJ.txt 11 ms 2048 KB
var.txt 11 ms 2048 KB